From 2cb0571a9b35065518f6b26cf7881df478542515 Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Fri, 21 Nov 2025 12:18:08 +0100 Subject: [PATCH] Introduce mortar layer --- .github/workflows/ci.yml | 14 +- .github/workflows/docker.yml | 2 +- CMakeLists.txt | 185 +- CONFIG/qt/MainDlg.cpp | 4 +- CONFIG/qt/MainDlg.h | 4 +- CONFIG/qt/config.cpp | 67 +- ISLE/3ds/config.cpp | 4 +- ISLE/android/config.cpp | 25 +- ISLE/emscripten/config.cpp | 4 +- ISLE/emscripten/events.cpp | 4 +- ISLE/emscripten/filesystem.cpp | 19 +- ISLE/emscripten/haptic.cpp | 14 +- ISLE/emscripten/messagebox.cpp | 4 +- ISLE/emscripten/messagebox.h | 6 +- ISLE/emscripten/window.cpp | 40 +- ISLE/emscripten/window.h | 6 +- ISLE/ios/config.cpp | 12 +- ISLE/isleapp.cpp | 479 +- ISLE/isleapp.h | 65 +- ISLE/switch/config.cpp | 2 +- ISLE/vita/config.cpp | 4 +- ISLE/vita/messagebox.cpp | 17 +- ISLE/vita/messagebox.h | 9 +- ISLE/xbox_one_series/config.cpp | 4 +- LEGO1/lego/legoomni/include/gasstation.h | 4 +- LEGO1/lego/legoomni/include/hospital.h | 2 +- LEGO1/lego/legoomni/include/infocenter.h | 2 +- .../legoomni/include/legocachesoundmanager.h | 4 +- LEGO1/lego/legoomni/include/legocarbuild.h | 4 +- .../legoomni/include/legocharactermanager.h | 4 +- .../include/legoeventnotificationparam.h | 18 +- .../lego/legoomni/include/legoinputmanager.h | 50 +- LEGO1/lego/legoomni/include/legomain.h | 15 +- .../legoomni/include/legoworldpresenter.h | 6 +- .../legoomni/include/mxtransitionmanager.h | 4 +- .../lego/legoomni/include/registrationbook.h | 2 +- LEGO1/lego/legoomni/src/actors/act2actor.cpp | 2 +- LEGO1/lego/legoomni/src/actors/act3actors.cpp | 2 +- LEGO1/lego/legoomni/src/actors/ambulance.cpp | 12 +- LEGO1/lego/legoomni/src/actors/doors.cpp | 7 +- LEGO1/lego/legoomni/src/actors/dunebuggy.cpp | 14 +- LEGO1/lego/legoomni/src/actors/radio.cpp | 8 +- LEGO1/lego/legoomni/src/actors/towtrack.cpp | 10 +- .../lego/legoomni/src/audio/legocachsound.cpp | 4 +- .../lego/legoomni/src/build/legocarbuild.cpp | 22 +- .../src/build/legocarbuildpresenter.cpp | 34 +- .../src/common/legoanimationmanager.cpp | 66 +- .../src/common/legocharactermanager.cpp | 10 +- .../legoomni/src/common/legogamestate.cpp | 18 +- LEGO1/lego/legoomni/src/common/legostate.cpp | 3 +- LEGO1/lego/legoomni/src/common/legoutils.cpp | 42 +- .../legoomni/src/common/legovariables.cpp | 16 +- .../src/common/mxcontrolpresenter.cpp | 14 +- .../src/common/mxtransitionmanager.cpp | 18 +- .../src/control/legometerpresenter.cpp | 10 +- LEGO1/lego/legoomni/src/entity/legoactor.cpp | 6 +- .../legoomni/src/entity/legonavcontroller.cpp | 146 +- LEGO1/lego/legoomni/src/entity/legoworld.cpp | 8 +- .../src/entity/legoworldpresenter.cpp | 48 +- .../legoomni/src/input/legoinputmanager.cpp | 210 +- LEGO1/lego/legoomni/src/main/legomain.cpp | 45 +- .../legoomni/src/paths/legoextraactor.cpp | 2 +- .../lego/legoomni/src/paths/legopathactor.cpp | 4 +- .../legoomni/src/paths/legopathboundary.cpp | 2 +- .../legoomni/src/paths/legopathcontroller.cpp | 8 +- .../legoomni/src/paths/legopathpresenter.cpp | 2 +- LEGO1/lego/legoomni/src/race/carrace.cpp | 18 +- LEGO1/lego/legoomni/src/race/legoracers.cpp | 22 +- .../legoomni/src/race/legoracespecial.cpp | 6 +- .../legoomni/src/video/legoanimpresenter.cpp | 16 +- .../legoomni/src/video/legomodelpresenter.cpp | 6 +- .../legoomni/src/video/legopartpresenter.cpp | 6 +- .../src/video/legotexturepresenter.cpp | 4 +- .../legoomni/src/video/legovideomanager.cpp | 24 +- LEGO1/lego/legoomni/src/worlds/act3.cpp | 2 +- LEGO1/lego/legoomni/src/worlds/gasstation.cpp | 8 +- .../lego/legoomni/src/worlds/historybook.cpp | 6 +- LEGO1/lego/legoomni/src/worlds/hospital.cpp | 8 +- LEGO1/lego/legoomni/src/worlds/infocenter.cpp | 8 +- LEGO1/lego/legoomni/src/worlds/isle.cpp | 4 +- LEGO1/lego/legoomni/src/worlds/legoact2.cpp | 16 +- LEGO1/lego/legoomni/src/worlds/police.cpp | 4 +- .../legoomni/src/worlds/registrationbook.cpp | 32 +- LEGO1/lego/legoomni/src/worlds/score.cpp | 2 +- LEGO1/lego/sources/misc/legoimage.cpp | 36 +- LEGO1/lego/sources/misc/legoimage.h | 18 +- LEGO1/lego/sources/misc/legostorage.cpp | 14 +- LEGO1/lego/sources/misc/legostorage.h | 4 +- LEGO1/lego/sources/roi/legolod.cpp | 4 +- LEGO1/lego/sources/roi/legoroi.cpp | 22 +- LEGO1/lego/sources/shape/legomesh.cpp | 6 +- LEGO1/modeldb/modeldb.cpp | 44 +- LEGO1/modeldb/modeldb.h | 12 +- LEGO1/mxdirectx/legodxinfo.cpp | 6 +- LEGO1/mxdirectx/mxdirect3d.cpp | 13 +- LEGO1/mxdirectx/mxdirectdraw.cpp | 6 +- LEGO1/mxdirectx/mxdirectxinfo.cpp | 10 +- LEGO1/mxdirectx/mxstopwatch.h | 26 +- LEGO1/omni/include/mxbitmap.h | 4 +- LEGO1/omni/include/mxcriticalsection.h | 4 +- LEGO1/omni/include/mxdsfile.h | 4 +- LEGO1/omni/include/mxdssource.h | 4 +- LEGO1/omni/include/mxio.h | 20 +- LEGO1/omni/include/mxmain.h | 2 +- LEGO1/omni/include/mxomnicreateparam.h | 2 +- LEGO1/omni/include/mxpresenter.h | 7 +- LEGO1/omni/include/mxsemaphore.h | 6 +- LEGO1/omni/include/mxsoundmanager.h | 6 +- LEGO1/omni/include/mxthread.h | 6 +- LEGO1/omni/include/mxtimer.h | 6 +- LEGO1/omni/include/mxutilities.h | 10 +- LEGO1/omni/include/mxvideoparam.h | 2 - LEGO1/omni/src/action/mxdsobject.cpp | 2 +- LEGO1/omni/src/action/mxdsselectaction.cpp | 8 +- LEGO1/omni/src/audio/mxsoundmanager.cpp | 27 +- LEGO1/omni/src/audio/mxwavepresenter.cpp | 10 +- LEGO1/omni/src/common/mxdebug.cpp | 4 +- LEGO1/omni/src/common/mxstring.cpp | 17 +- LEGO1/omni/src/common/mxtimer.cpp | 6 +- LEGO1/omni/src/common/mxutilities.cpp | 6 +- LEGO1/omni/src/main/mxmain.cpp | 16 +- .../omni/src/stream/mxdiskstreamprovider.cpp | 2 +- LEGO1/omni/src/stream/mxdsfile.cpp | 8 +- LEGO1/omni/src/stream/mxio.cpp | 112 +- LEGO1/omni/src/system/mxautolock.cpp | 6 +- LEGO1/omni/src/system/mxcriticalsection.cpp | 8 +- LEGO1/omni/src/system/mxsemaphore.cpp | 6 +- LEGO1/omni/src/system/mxthread.cpp | 19 +- LEGO1/omni/src/video/mxbitmap.cpp | 14 +- LEGO1/omni/src/video/mxdisplaysurface.cpp | 22 +- LEGO1/omni/src/video/mxstillpresenter.cpp | 4 +- LEGO1/omni/src/video/mxvideomanager.cpp | 20 +- extensions/include/extensions/textureloader.h | 2 +- extensions/src/extensions.cpp | 10 +- extensions/src/siloader.cpp | 54 +- extensions/src/textureloader.cpp | 28 +- miniwin/CMakeLists.txt | 9 +- miniwin/include/miniwin/miniwindevice.h | 6 +- miniwin/include/miniwin/windows.h | 2 +- .../src/d3drm/backends/citro3d/renderer.cpp | 102 +- .../src/d3drm/backends/directx9/actual.cpp | 29 +- miniwin/src/d3drm/backends/directx9/actual.h | 13 +- .../src/d3drm/backends/directx9/renderer.cpp | 45 +- .../src/d3drm/backends/gxm/gxm_context.cpp | 22 +- miniwin/src/d3drm/backends/gxm/gxm_memory.cpp | 10 +- miniwin/src/d3drm/backends/gxm/gxm_memory.h | 2 +- .../src/d3drm/backends/gxm/gxm_renderer.cpp | 81 +- miniwin/src/d3drm/backends/gxm/utils.h | 4 +- miniwin/src/d3drm/backends/opengl1/actual.cpp | 20 +- miniwin/src/d3drm/backends/opengl1/actual.h | 10 +- .../src/d3drm/backends/opengl1/renderer.cpp | 146 +- .../src/d3drm/backends/opengles2/renderer.cpp | 149 +- .../src/d3drm/backends/opengles3/renderer.cpp | 149 +- .../src/d3drm/backends/sdl3gpu/renderer.cpp | 180 +- .../sdl3gpu/shaders/gencshadersource.py | 12 +- .../shaders/generated/PositionColor.vert.h | 10 +- .../sdl3gpu/shaders/generated/ShaderIndex.cpp | 6 +- .../sdl3gpu/shaders/generated/ShaderIndex.h | 2 +- .../shaders/generated/SolidColor.frag.h | 10 +- .../src/d3drm/backends/software/renderer.cpp | 211 +- miniwin/src/d3drm/d3drm.cpp | 11 +- miniwin/src/d3drm/d3drmdevice.cpp | 32 +- miniwin/src/d3drm/d3drmframe.cpp | 9 +- miniwin/src/d3drm/d3drmmesh.cpp | 23 +- miniwin/src/d3drm/d3drmrenderer.cpp | 18 +- miniwin/src/d3drm/d3drmtexture.cpp | 2 +- miniwin/src/d3drm/d3drmviewport.cpp | 5 +- miniwin/src/ddraw/ddpalette.cpp | 12 +- miniwin/src/ddraw/ddraw.cpp | 74 +- miniwin/src/ddraw/ddsurface.cpp | 58 +- miniwin/src/ddraw/framebuffer.cpp | 38 +- miniwin/src/internal/d3drmdevice_impl.h | 6 +- miniwin/src/internal/d3drmmesh_impl.h | 2 +- miniwin/src/internal/d3drmobject_impl.h | 14 +- miniwin/src/internal/d3drmrenderer.h | 20 +- miniwin/src/internal/d3drmrenderer_citro3d.h | 18 +- miniwin/src/internal/d3drmrenderer_directx9.h | 14 +- miniwin/src/internal/d3drmrenderer_gxm.h | 20 +- miniwin/src/internal/d3drmrenderer_opengl1.h | 20 +- .../src/internal/d3drmrenderer_opengles2.h | 24 +- .../src/internal/d3drmrenderer_opengles3.h | 24 +- miniwin/src/internal/d3drmrenderer_sdl3gpu.h | 139 +- .../src/internal/d3drmrenderer_sdl3gpu_priv.h | 118 + miniwin/src/internal/d3drmrenderer_software.h | 32 +- miniwin/src/internal/d3drmtexture_impl.h | 2 +- miniwin/src/internal/d3drmviewport_impl.h | 2 +- miniwin/src/internal/ddpalette_impl.h | 2 +- miniwin/src/internal/ddraw_impl.h | 6 +- miniwin/src/internal/ddsurface_impl.h | 6 +- miniwin/src/internal/framebuffer_impl.h | 2 +- miniwin/src/internal/meshutils.cpp | 2 +- miniwin/src/internal/meshutils.h | 2 +- miniwin/src/internal/miniwin.h | 10 +- miniwin/src/internal/structs.h | 4 +- miniwin/src/windows/windows.cpp | 26 +- mortar/include/mortar/KHR/khrplatform.h | 310 + mortar/include/mortar/backends/sdl3_dynamic.h | 5466 ++++ mortar/include/mortar/mortar.h | 31 + mortar/include/mortar/mortar_audio.h | 41 + mortar/include/mortar/mortar_backend.h | 20 + mortar/include/mortar/mortar_begin.h | 22 + mortar/include/mortar/mortar_cpuinfo.h | 13 + mortar/include/mortar/mortar_end.h | 4 + mortar/include/mortar/mortar_error.h | 7 + mortar/include/mortar/mortar_events.h | 397 + mortar/include/mortar/mortar_filesystem.h | 46 + mortar/include/mortar/mortar_gamepad.h | 73 + mortar/include/mortar/mortar_haptic.h | 28 + mortar/include/mortar/mortar_init.h | 9 + mortar/include/mortar/mortar_iostream.h | 45 + mortar/include/mortar/mortar_joystick.h | 15 + mortar/include/mortar/mortar_keyboard.h | 11 + mortar/include/mortar/mortar_keycode.h | 293 + mortar/include/mortar/mortar_log.h | 35 + mortar/include/mortar/mortar_main.h | 25 + mortar/include/mortar/mortar_messagebox.h | 23 + mortar/include/mortar/mortar_mouse.h | 65 + mortar/include/mortar/mortar_mutex.h | 26 + mortar/include/mortar/mortar_opengl.h | 2174 ++ .../include/mortar/mortar_opengl_glcorearb.h | 11269 +++++++++ mortar/include/mortar/mortar_opengl_glext.h | 21075 ++++++++++++++++ mortar/include/mortar/mortar_pixels.h | 91 + mortar/include/mortar/mortar_process.h | 9 + mortar/include/mortar/mortar_rect.h | 27 + mortar/include/mortar/mortar_render.h | 40 + mortar/include/mortar/mortar_scancode.h | 380 + mortar/include/mortar/mortar_stdinc.h | 92 + mortar/include/mortar/mortar_surface.h | 82 + mortar/include/mortar/mortar_system.h | 7 + mortar/include/mortar/mortar_thread.h | 15 + mortar/include/mortar/mortar_timer.h | 29 + mortar/include/mortar/mortar_touch.h | 11 + mortar/include/mortar/mortar_video.h | 156 + mortar/src/mortar.cpp | 100 + mortar/src/sdl3/sdl3_audio.cpp | 47 + mortar/src/sdl3/sdl3_cpuinfo.cpp | 22 + mortar/src/sdl3/sdl3_error.cpp | 7 + mortar/src/sdl3/sdl3_events.cpp | 379 + mortar/src/sdl3/sdl3_filesystem.cpp | 79 + mortar/src/sdl3/sdl3_gamepad.cpp | 57 + mortar/src/sdl3/sdl3_haptic.cpp | 52 + mortar/src/sdl3/sdl3_init.cpp | 24 + mortar/src/sdl3/sdl3_internal.h | 41 + mortar/src/sdl3/sdl3_iostream.cpp | 93 + mortar/src/sdl3/sdl3_joystick.cpp | 12 + mortar/src/sdl3/sdl3_keyboard.cpp | 7 + mortar/src/sdl3/sdl3_keycode.cpp | 1131 + mortar/src/sdl3/sdl3_log.cpp | 84 + mortar/src/sdl3/sdl3_main.cpp | 96 + mortar/src/sdl3/sdl3_messagebox.cpp | 39 + mortar/src/sdl3/sdl3_mouse.cpp | 111 + mortar/src/sdl3/sdl3_mutex.cpp | 52 + mortar/src/sdl3/sdl3_pixels.cpp | 257 + mortar/src/sdl3/sdl3_process.cpp | 7 + mortar/src/sdl3/sdl3_public.h | 12 + mortar/src/sdl3/sdl3_rect.cpp | 34 + mortar/src/sdl3/sdl3_render.cpp | 56 + mortar/src/sdl3/sdl3_stdinc.cpp | 122 + mortar/src/sdl3/sdl3_surface.cpp | 224 + mortar/src/sdl3/sdl3_system.cpp | 13 + mortar/src/sdl3/sdl3_thread.cpp | 21 + mortar/src/sdl3/sdl3_timer.cpp | 37 + mortar/src/sdl3/sdl3_version.cpp | 17 + mortar/src/sdl3/sdl3_video.cpp | 325 + .../linux/flatpak/org.legoisland.Isle.json | 7 +- tools/gendynsdl3api.py | 276 + tools/ncc/skip.yml | 8 +- tools/used-sdl3-symbols.json | 217 + util/compat.h | 2 +- 269 files changed, 49080 insertions(+), 2286 deletions(-) create mode 100644 miniwin/src/internal/d3drmrenderer_sdl3gpu_priv.h create mode 100644 mortar/include/mortar/KHR/khrplatform.h create mode 100644 mortar/include/mortar/backends/sdl3_dynamic.h create mode 100644 mortar/include/mortar/mortar.h create mode 100644 mortar/include/mortar/mortar_audio.h create mode 100644 mortar/include/mortar/mortar_backend.h create mode 100644 mortar/include/mortar/mortar_begin.h create mode 100644 mortar/include/mortar/mortar_cpuinfo.h create mode 100644 mortar/include/mortar/mortar_end.h create mode 100644 mortar/include/mortar/mortar_error.h create mode 100644 mortar/include/mortar/mortar_events.h create mode 100644 mortar/include/mortar/mortar_filesystem.h create mode 100644 mortar/include/mortar/mortar_gamepad.h create mode 100644 mortar/include/mortar/mortar_haptic.h create mode 100644 mortar/include/mortar/mortar_init.h create mode 100644 mortar/include/mortar/mortar_iostream.h create mode 100644 mortar/include/mortar/mortar_joystick.h create mode 100644 mortar/include/mortar/mortar_keyboard.h create mode 100644 mortar/include/mortar/mortar_keycode.h create mode 100644 mortar/include/mortar/mortar_log.h create mode 100644 mortar/include/mortar/mortar_main.h create mode 100644 mortar/include/mortar/mortar_messagebox.h create mode 100644 mortar/include/mortar/mortar_mouse.h create mode 100644 mortar/include/mortar/mortar_mutex.h create mode 100644 mortar/include/mortar/mortar_opengl.h create mode 100644 mortar/include/mortar/mortar_opengl_glcorearb.h create mode 100644 mortar/include/mortar/mortar_opengl_glext.h create mode 100644 mortar/include/mortar/mortar_pixels.h create mode 100644 mortar/include/mortar/mortar_process.h create mode 100644 mortar/include/mortar/mortar_rect.h create mode 100644 mortar/include/mortar/mortar_render.h create mode 100644 mortar/include/mortar/mortar_scancode.h create mode 100644 mortar/include/mortar/mortar_stdinc.h create mode 100644 mortar/include/mortar/mortar_surface.h create mode 100644 mortar/include/mortar/mortar_system.h create mode 100644 mortar/include/mortar/mortar_thread.h create mode 100644 mortar/include/mortar/mortar_timer.h create mode 100644 mortar/include/mortar/mortar_touch.h create mode 100644 mortar/include/mortar/mortar_video.h create mode 100644 mortar/src/mortar.cpp create mode 100644 mortar/src/sdl3/sdl3_audio.cpp create mode 100644 mortar/src/sdl3/sdl3_cpuinfo.cpp create mode 100644 mortar/src/sdl3/sdl3_error.cpp create mode 100644 mortar/src/sdl3/sdl3_events.cpp create mode 100644 mortar/src/sdl3/sdl3_filesystem.cpp create mode 100644 mortar/src/sdl3/sdl3_gamepad.cpp create mode 100644 mortar/src/sdl3/sdl3_haptic.cpp create mode 100644 mortar/src/sdl3/sdl3_init.cpp create mode 100644 mortar/src/sdl3/sdl3_internal.h create mode 100644 mortar/src/sdl3/sdl3_iostream.cpp create mode 100644 mortar/src/sdl3/sdl3_joystick.cpp create mode 100644 mortar/src/sdl3/sdl3_keyboard.cpp create mode 100644 mortar/src/sdl3/sdl3_keycode.cpp create mode 100644 mortar/src/sdl3/sdl3_log.cpp create mode 100644 mortar/src/sdl3/sdl3_main.cpp create mode 100644 mortar/src/sdl3/sdl3_messagebox.cpp create mode 100644 mortar/src/sdl3/sdl3_mouse.cpp create mode 100644 mortar/src/sdl3/sdl3_mutex.cpp create mode 100644 mortar/src/sdl3/sdl3_pixels.cpp create mode 100644 mortar/src/sdl3/sdl3_process.cpp create mode 100644 mortar/src/sdl3/sdl3_public.h create mode 100644 mortar/src/sdl3/sdl3_rect.cpp create mode 100644 mortar/src/sdl3/sdl3_render.cpp create mode 100644 mortar/src/sdl3/sdl3_stdinc.cpp create mode 100644 mortar/src/sdl3/sdl3_surface.cpp create mode 100644 mortar/src/sdl3/sdl3_system.cpp create mode 100644 mortar/src/sdl3/sdl3_thread.cpp create mode 100644 mortar/src/sdl3/sdl3_timer.cpp create mode 100644 mortar/src/sdl3/sdl3_version.cpp create mode 100644 mortar/src/sdl3/sdl3_video.cpp create mode 100755 tools/gendynsdl3api.py create mode 100644 tools/used-sdl3-symbols.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c2ac64d5..b9c9b970 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,10 +11,10 @@ jobs: name: 'clang-format' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Run clang-format run: | - find CONFIG LEGO1 ISLE miniwin -iname '*.h' -o -iname '*.cpp' | xargs \ + find CONFIG LEGO1 ISLE miniwin mortar -iname '*.h' -o -iname '*.cpp' | xargs \ pipx run "clang-format>=17,<18" \ --style=file \ -i @@ -132,7 +132,7 @@ jobs: echo "$VITASDK/bin" >> $GITHUB_PATH ./install-all.sh - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Checkout LFS if: ${{ matrix.build-assets }} @@ -197,7 +197,7 @@ jobs: success=0 max_tries=10 for i in $(seq $max_tries); do - cpack . && success=1 + cpack . -C Release && success=1 if test $success = 1; then break fi @@ -296,7 +296,7 @@ jobs: options: --privileged steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Build Flatpak uses: flatpak/flatpak-github-actions/flatpak-builder@v6 @@ -310,7 +310,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install LLVM and Clang uses: KyleMayes/install-llvm-action@v1 @@ -360,7 +360,7 @@ jobs: merge-multiple: true - name: Checkout uploadtool - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: 'probonopd/uploadtool' path: 'uploadtool' diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index ca316590..149743dc 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -22,7 +22,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Log in to the Container registry uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 diff --git a/CMakeLists.txt b/CMakeLists.txt index 0196d36e..0680a381 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,11 +38,19 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) +set(ISLE_MORTAR_SDL3_DEFAULT ON) +set(ISLE_MORTAR_SDL3_DYNAMIC_AVAILABLE ON) +if(ANDROID OR IOS OR EMSCRIPTEN OR NINTENDO_3DS OR NX OR VITA OR XBOXONE OR CMAKE_SYSTEM_NAME MATCHES "NintendoSwitch") + set(ISLE_MORTAR_SDL3_DYNAMIC_AVAILABLE OFF) +endif() +option(ISLE_MORTAR_SDL3 "Mortar SDL3 backend" ${ISLE_MORTAR_SDL3_DEFAULT}) +cmake_dependent_option(ISLE_MORTAR_SDL3_DYNAMIC "Mortar dynamic SDL3 backend" ON "ISLE_MORTAR_SDL3;${ISLE_MORTAR_SDL3_DYNAMIC_AVAILABLE}" OFF) + if (NOT MINGW) set(NOT_MINGW ON) else() set(NOT_MINGW OFF) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static -static-libgcc -static-libstdc++") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-static -static-libgcc -static-libstdc++") endif() find_program(SDL_SHADERCROSS_BIN NAMES "shadercross") @@ -76,46 +84,48 @@ add_library(Isle::iniparser INTERFACE IMPORTED) if (DOWNLOAD_DEPENDENCIES) # FetchContent downloads and configures dependencies - message(STATUS "Fetching SDL3 and iniparser. This might take a while...") include(FetchContent) - - if(ANDROID) - # Built by Gradle - find_package(SDL3 REQUIRED CONFIG COMPONENTS Shared) - else() - if (WINDOWS_STORE) - FetchContent_Declare( - SDL3 - GIT_REPOSITORY "https://github.com/Helloyunho/SDL3-uwp.git" - GIT_TAG "main" - EXCLUDE_FROM_ALL - ) - elseif (NINTENDO_SWITCH) - FetchContent_Declare( - SDL3 - # Official repo missing Threads support? - #GIT_REPOSITORY "https://github.com/devkitPro/SDL.git" - #GIT_TAG "switch-sdl-3.2" - #GIT_REPOSITORY "https://github.com/vs49688/SDL.git" - GIT_REPOSITORY "https://github.com/SnepOMatic/SDL3-Switch.git" - GIT_TAG "switch-sdl-3.2.14" - EXCLUDE_FROM_ALL - ) - set(CMAKE_DISABLE_PRECOMPILE_HEADERS ON CACHE BOOL "Disable PCH globally" FORCE) + if(ISLE_MORTAR_SDL3) + if(ANDROID) + # Built by Gradle + find_package(SDL3 REQUIRED CONFIG COMPONENTS Shared) else() - set(ISLE_SDL3_GIT_REPO "https://github.com/libsdl-org/SDL.git" CACHE STRING "The SDL3 git repo") - set(ISLE_SDL3_GIT_TAG "main" CACHE STRING "The SDL3 git tag") - FetchContent_Declare( - SDL3 - GIT_REPOSITORY "${ISLE_SDL3_GIT_REPO}" - GIT_TAG "${ISLE_SDL3_GIT_TAG}" - UPDATE_DISCONNECTED TRUE - EXCLUDE_FROM_ALL - ) + message(STATUS "Fetching SDL3. This might take a while...") + if (WINDOWS_STORE) + FetchContent_Declare( + SDL3 + GIT_REPOSITORY "https://github.com/Helloyunho/SDL3-uwp.git" + GIT_TAG "main" + EXCLUDE_FROM_ALL + ) + elseif (NINTENDO_SWITCH) + FetchContent_Declare( + SDL3 + # Official repo missing Threads support? + #GIT_REPOSITORY "https://github.com/devkitPro/SDL.git" + #GIT_TAG "switch-sdl-3.2" + #GIT_REPOSITORY "https://github.com/vs49688/SDL.git" + GIT_REPOSITORY "https://github.com/SnepOMatic/SDL3-Switch.git" + GIT_TAG "switch-sdl-3.2.14" + EXCLUDE_FROM_ALL + ) + set(CMAKE_DISABLE_PRECOMPILE_HEADERS ON CACHE BOOL "Disable PCH globally" FORCE) + else() + set(ISLE_SDL3_GIT_REPO "https://github.com/libsdl-org/SDL.git" CACHE STRING "The SDL3 git repo") + set(ISLE_SDL3_GIT_TAG "main" CACHE STRING "The SDL3 git tag") + FetchContent_Declare( + SDL3 + GIT_REPOSITORY "${ISLE_SDL3_GIT_REPO}" + GIT_TAG "${ISLE_SDL3_GIT_TAG}" + UPDATE_DISCONNECTED TRUE + EXCLUDE_FROM_ALL + ) + endif() + FetchContent_MakeAvailable(SDL3) endif() - FetchContent_MakeAvailable(SDL3) endif() + message(STATUS "Fetching iniparser. This might take a while...") FetchContent_Declare( iniparser GIT_REPOSITORY "https://gitlab.com/iniparser/iniparser.git" @@ -130,10 +140,12 @@ if (DOWNLOAD_DEPENDENCIES) target_link_libraries(Isle::iniparser INTERFACE iniparser-static) endblock() else() - # find_package looks for already-installed system packages. - # Configure with `-DCMAKE_PREFIX_PATH="/path/to/package1;/path/to/package2"` - # to add search paths. - find_package(SDL3 CONFIG REQUIRED) + if(ISLE_MORTAR_SDL3) + # find_package looks for already-installed system packages. + # Configure with `-DCMAKE_PREFIX_PATH="/path/to/package1;/path/to/package2"` + # to add search paths. + find_package(SDL3 CONFIG REQUIRED) + endif() find_package(iniparser REQUIRED CONFIG) if(TARGET iniparser-shared) @@ -213,8 +225,7 @@ target_include_directories(lego1 PUBLIC "$") target_include_directories(lego1 PUBLIC "$") target_include_directories(lego1 PUBLIC "$") -target_link_libraries(lego1 PRIVATE SDL3::SDL3) -target_link_libraries(lego1 PUBLIC SDL3::Headers) +target_link_libraries(lego1 PUBLIC mortar::headers) target_link_libraries(lego1 PRIVATE $<$:DirectX5::DirectX5>) # Allow unconditional include of miniwin/miniwind3d.h target_link_libraries(lego1 PRIVATE miniwin-headers) @@ -563,8 +574,8 @@ if (ISLE_BUILD_APP) # Use internal DirectX 5 if required target_link_libraries(isle PRIVATE $<$:DirectX5::DirectX5>) - # Link SDL and iniparser - target_link_libraries(isle PRIVATE SDL3::SDL3 Isle::iniparser) + # Link mortar and iniparser + target_link_libraries(isle PRIVATE Isle::iniparser) # Allow unconditional include of miniwin/miniwindevice.h target_link_libraries(isle PRIVATE miniwin-headers) @@ -671,6 +682,7 @@ if (ISLE_BUILD_CONFIG) CONFIG/qt/res/config.qrc ) target_link_libraries(isle-config PRIVATE Qt6::Core Qt6::Widgets) + target_link_libraries(isle-config PRIVATE mortar::headers mortar::embed) set_property(TARGET isle-config PROPERTY AUTOMOC ON) set_property(TARGET isle-config PROPERTY AUTORCC ON) set_property(TARGET isle-config PROPERTY AUTOUIC ON) @@ -683,7 +695,7 @@ if (ISLE_BUILD_CONFIG) target_link_libraries(isle-config PRIVATE DirectX5::DirectX5) endif() target_compile_definitions(isle-config PRIVATE DIRECT3D_VERSION=0x500) - target_link_libraries(isle-config PRIVATE SDL3::SDL3 Isle::iniparser) + target_link_libraries(isle-config PRIVATE Isle::iniparser) if (NOT ISLE_MINIWIN) target_link_libraries(isle-config PRIVATE ddraw dxguid) endif() @@ -721,6 +733,89 @@ if (ISLE_MINIWIN) set_property(TARGET ${isle_targets} APPEND PROPERTY LINK_LIBRARIES "miniwin") endif() +add_library(mortar_headers INTERFACE) +add_library(mortar::headers ALIAS mortar_headers) +target_compile_definitions(mortar_headers INTERFACE $<$:MORTAR_DLL>) +target_include_directories(mortar_headers INTERFACE "$") + +# Link with mortar::declare_embedded to declare mortar is embedded alongside it +add_library(mortar_declare_embedded INTERFACE) +add_library(mortar::declare_embedded ALIAS mortar_declare_embedded) +target_sources(mortar_declare_embedded INTERFACE $) +target_compile_definitions(mortar_declare_embedded INTERFACE BUILDING_MORTAR) + +# Link with mortar::embed to embed mortar inside of it +add_library(mortar_embed INTERFACE) +add_library(mortar::embed ALIAS mortar_embed) +target_sources(mortar_embed INTERFACE $) +target_link_libraries(mortar_embed INTERFACE mortar::declare_embedded) + +add_library(mortar STATIC + mortar/include/mortar/mortar.h + mortar/src/mortar.cpp +) +target_compile_definitions(mortar PRIVATE BUILDING_MORTAR) +target_link_libraries(mortar PUBLIC mortar::headers) +set_property(TARGET mortar PROPERTY C_VISIBILITY_PRESET "hidden") +set_property(TARGET mortar PROPERTY CXX_VISIBILITY_PRESET "hidden") +list(APPEND isle_targets mortar) + +if(ISLE_MORTAR_SDL3) + set(MORTAR_SDL3_SOURCES + mortar/src/sdl3/sdl3_audio.cpp + mortar/src/sdl3/sdl3_cpuinfo.cpp + mortar/src/sdl3/sdl3_error.cpp + mortar/src/sdl3/sdl3_events.cpp + mortar/src/sdl3/sdl3_filesystem.cpp + mortar/src/sdl3/sdl3_gamepad.cpp + mortar/src/sdl3/sdl3_haptic.cpp + mortar/src/sdl3/sdl3_init.cpp + mortar/src/sdl3/sdl3_iostream.cpp + mortar/src/sdl3/sdl3_joystick.cpp + mortar/src/sdl3/sdl3_keyboard.cpp + mortar/src/sdl3/sdl3_keycode.cpp + mortar/src/sdl3/sdl3_log.cpp + mortar/src/sdl3/sdl3_main.cpp + mortar/src/sdl3/sdl3_messagebox.cpp + mortar/src/sdl3/sdl3_mouse.cpp + mortar/src/sdl3/sdl3_mutex.cpp + mortar/src/sdl3/sdl3_pixels.cpp + mortar/src/sdl3/sdl3_process.cpp + mortar/src/sdl3/sdl3_rect.cpp + mortar/src/sdl3/sdl3_render.cpp + mortar/src/sdl3/sdl3_stdinc.cpp + mortar/src/sdl3/sdl3_surface.cpp + mortar/src/sdl3/sdl3_system.cpp + mortar/src/sdl3/sdl3_thread.cpp + mortar/src/sdl3/sdl3_timer.cpp + mortar/src/sdl3/sdl3_version.cpp + mortar/src/sdl3/sdl3_video.cpp + ) + target_sources(mortar PRIVATE ${MORTAR_SDL3_SOURCES}) + get_property(sdl3_alias TARGET SDL3::SDL3 PROPERTY ALIASED_TARGET) + add_dependencies(mortar "SDL3::SDL3") + set_property(SOURCE ${MORTAR_SDL3_SOURCES} APPEND PROPERTY INCLUDE_DIRECTORIES $) + if(ISLE_MORTAR_SDL3_DYNAMIC) + target_compile_definitions(mortar_headers INTERFACE SDL3_DYNAMIC_LOAD) + set_property(TARGET lego1 APPEND PROPERTY BUILD_RPATH "$") + if(TARGET isle) + set_property(TARGET isle APPEND PROPERTY BUILD_RPATH "$") + endif() + if(TARGET isle-config) + set_property(TARGET isle-config APPEND PROPERTY BUILD_RPATH "$") + endif() + else() + target_link_libraries(mortar PRIVATE SDL3::Headers) + target_link_libraries(mortar_embed INTERFACE SDL3::SDL3) + endif() +endif() +target_link_libraries(lego1 PRIVATE mortar_headers mortar::embed) +if(NOT BUILD_SHARED_LIBS) + if(TARGET isle) + target_link_libraries(isle PRIVATE mortar::embed) + endif() +endif() + if (MSVC) if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15") set_property(TARGET ${isle_targets} APPEND PROPERTY COMPILE_DEFINITIONS "_CRT_SECURE_NO_WARNINGS") diff --git a/CONFIG/qt/MainDlg.cpp b/CONFIG/qt/MainDlg.cpp index 1ef8683c..0565b6ad 100644 --- a/CONFIG/qt/MainDlg.cpp +++ b/CONFIG/qt/MainDlg.cpp @@ -13,8 +13,8 @@ #include #include #include -#include #include +#include #include #include @@ -182,7 +182,7 @@ bool CMainDialog::OnInitDialog() m_ui->exFullResComboBox->clear(); int displayModeCount; - displayModes = SDL_GetFullscreenDisplayModes(SDL_GetPrimaryDisplay(), &displayModeCount); + displayModes = MORTAR_GetFullscreenDisplayModes(MORTAR_GetPrimaryDisplay(), &displayModeCount); for (int i = 0; i < displayModeCount; ++i) { QString mode = diff --git a/CONFIG/qt/MainDlg.h b/CONFIG/qt/MainDlg.h index b5df132f..b4f3823f 100644 --- a/CONFIG/qt/MainDlg.h +++ b/CONFIG/qt/MainDlg.h @@ -7,7 +7,7 @@ #include #include -#include +#include namespace Ui { @@ -31,7 +31,7 @@ class CMainDialog : public QDialog { bool m_advanced = false; QStringList assetPaths = QStringList(); Ui::MainDialog* m_ui = nullptr; - SDL_DisplayMode** displayModes; + MORTAR_DisplayMode** displayModes; void keyReleaseEvent(QKeyEvent* event) override; bool OnInitDialog(); diff --git a/CONFIG/qt/config.cpp b/CONFIG/qt/config.cpp index bef90ebc..e6623670 100644 --- a/CONFIG/qt/config.cpp +++ b/CONFIG/qt/config.cpp @@ -16,8 +16,8 @@ #include #include #include -#include #include +#include DECOMP_SIZE_ASSERT(CWinApp, 0xc4) DECOMP_SIZE_ASSERT(CConfigApp, 0x108) @@ -27,23 +27,14 @@ DECOMP_STATIC_ASSERT(offsetof(CConfigApp, m_display_bit_depth) == 0xd0) // FUNCTION: CONFIG 0x00402c40 CConfigApp::CConfigApp() { - char* prefPath = SDL_GetPrefPath("isledecomp", "isle"); - char* iniConfig; - if (prefPath) { - m_iniPath = std::string{prefPath} + "isle.ini"; - } - else { - m_iniPath = "isle.ini"; - } - SDL_free(prefPath); } // FUNCTION: CONFIG 0x00402dc0 bool CConfigApp::InitInstance() { - if (!SDL_Init(SDL_INIT_VIDEO)) { - QString err = QString{"SDL failed to initialize ("} + SDL_GetError() + ")"; - QMessageBox::warning(nullptr, "SDL initialization error", err); + if (!MORTAR_Init()) { + QString err = QString{"MORTAR failed to initialize ("} + MORTAR_GetError() + ")"; + QMessageBox::warning(nullptr, "MORTAR initialization error", err); return false; } if (!DetectDirectX5()) { @@ -56,17 +47,24 @@ bool CConfigApp::InitInstance() return false; } m_device_enumerator = new LegoDeviceEnumerate; - SDL_Window* window = SDL_CreateWindow("Test window", 640, 480, SDL_WINDOW_HIDDEN | SDL_WINDOW_OPENGL); + MORTAR_EX_CreateWindowProps createWindowProps = {}; + createWindowProps.width = 640; + createWindowProps.height = 480; + createWindowProps.title = "Test window"; + createWindowProps.hidden = true; + createWindowProps.opengl.enabled = true; + MORTAR_Window* window = MORTAR_EX_CreateWindow(&createWindowProps); HWND hWnd; + #ifdef MINIWIN hWnd = reinterpret_cast(window); #else - hWnd = (HWND) SDL_GetPointerProperty(SDL_GetWindowProperties(window), SDL_PROP_WINDOW_WIN32_HWND_POINTER, NULL); + hWnd = (HWND) MORTAR_EXT_GetWindowProperty(window, MORTAR_WINDOW_PROPERTY_HWND, nullptr); #endif if (m_device_enumerator->DoEnumerate(hWnd)) { return FALSE; } - SDL_DestroyWindow(window); + MORTAR_DestroyWindow(window); m_aspect_ratio = 0; m_exf_x_res = m_x_res = 640; m_exf_y_res = m_y_res = 480; @@ -93,7 +91,7 @@ bool CConfigApp::InitInstance() m_texture_path = "textures/"; m_custom_assets_enabled = TRUE; m_custom_asset_path = "assets/widescreen.si"; - int totalRamMiB = SDL_GetSystemRAM(); + int totalRamMiB = MORTAR_GetSystemRAM(); if (totalRamMiB < 12) { m_ram_quality_limit = 2; m_3d_sound = FALSE; @@ -444,7 +442,7 @@ int CConfigApp::ExitInstance() delete m_device_enumerator; m_device_enumerator = NULL; } - SDL_Quit(); + MORTAR_Quit(); return 0; } @@ -471,6 +469,12 @@ int main(int argc, char* argv[]) parser.addHelpOption(); parser.addVersionOption(); + QCommandLineOption platformOption( + QStringList() << "platform", + QCoreApplication::translate("config", "Set MORTAR platform."), + QCoreApplication::translate("config", "platform") + ); + parser.addOption(platformOption); QCommandLineOption iniOption( QStringList() << "ini", QCoreApplication::translate("config", "Set INI path."), @@ -479,6 +483,33 @@ int main(int argc, char* argv[]) parser.addOption(iniOption); parser.process(app); + if (parser.isSet(platformOption)) { + std::string s = parser.value(iniOption).toStdString(); + MORTAR_Backend backend; + if (!MORTAR_ParseBackendName(s.c_str(), &backend)) { + qFatal("Unknown platform: %s", s.c_str()); + return 1; + } + if (!MORTAR_SetBackend(backend)) { + qFatal("Failed to set platform"); + return 1; + } + } + + if (!MORTAR_InitializeBackend()) { + qFatal("Failed to initialize platform"); + return 1; + } + + char* prefPath = MORTAR_GetPrefPath("isledecomp", "isle"); + if (prefPath) { + g_theApp.SetIniPath(std::string{prefPath} + "isle.ini"); + } + else { + g_theApp.SetIniPath("isle.ini"); + } + MORTAR_free(prefPath); + if (parser.isSet(iniOption)) { g_theApp.SetIniPath(parser.value(iniOption).toStdString()); } diff --git a/ISLE/3ds/config.cpp b/ISLE/3ds/config.cpp index 88318565..5a432705 100644 --- a/ISLE/3ds/config.cpp +++ b/ISLE/3ds/config.cpp @@ -1,11 +1,11 @@ #include "config.h" -#include #include +#include void N3DS_SetupDefaultConfigOverrides(dictionary* p_dictionary) { - SDL_Log("Overriding default config for 3DS"); + MORTAR_Log("Overriding default config for 3DS"); // We are currently not bundling the assets into romfs. // User must place assets in sdmc:/3ds/isle where diff --git a/ISLE/android/config.cpp b/ISLE/android/config.cpp index 4883a239..0bebe77c 100644 --- a/ISLE/android/config.cpp +++ b/ISLE/android/config.cpp @@ -2,20 +2,18 @@ #include "mxstring.h" -#include -#include -#include #include +#include void Android_SetupDefaultConfigOverrides(dictionary* p_dictionary) { - SDL_Log("Overriding default config for Android"); + MORTAR_Log("Overriding default config for Android"); - const char* data = SDL_GetAndroidExternalStoragePath(); + const char* data = MORTAR_GetAndroidExternalStoragePath(); MxString savedata = MxString(data) + "/saves/"; - if (!SDL_GetPathInfo(savedata.GetData(), NULL)) { - SDL_CreateDirectory(savedata.GetData()); + if (!MORTAR_GetPathInfo(savedata.GetData(), NULL)) { + MORTAR_CreateDirectory(savedata.GetData()); } iniparser_set(p_dictionary, "isle:diskpath", data); @@ -25,5 +23,16 @@ void Android_SetupDefaultConfigOverrides(dictionary* p_dictionary) // Default to Virtual Mouse char buf[16]; - iniparser_set(p_dictionary, "isle:Touch Scheme", SDL_itoa(0, buf, 10)); + iniparser_set(p_dictionary, "isle:Touch Scheme", MORTAR_itoa(0, buf, 10)); +} + +extern int main(int argc, char* argv[]); + +extern "C" +{ + + int SDL_main(int argc, char* argv[]) + { + return main(argc, argv); + } } diff --git a/ISLE/emscripten/config.cpp b/ISLE/emscripten/config.cpp index 58a42704..74c2cd6c 100644 --- a/ISLE/emscripten/config.cpp +++ b/ISLE/emscripten/config.cpp @@ -3,13 +3,13 @@ #include "filesystem.h" #include "window.h" -#include #include #include +#include void Emscripten_SetupDefaultConfigOverrides(dictionary* p_dictionary) { - SDL_Log("Overriding default config for Emscripten"); + MORTAR_Log("Overriding default config for Emscripten"); iniparser_set(p_dictionary, "isle:diskpath", Emscripten_bundledPath); iniparser_set(p_dictionary, "isle:cdpath", Emscripten_streamPath); diff --git a/ISLE/emscripten/events.cpp b/ISLE/emscripten/events.cpp index 436c1b64..ac9484b2 100644 --- a/ISLE/emscripten/events.cpp +++ b/ISLE/emscripten/events.cpp @@ -25,7 +25,7 @@ void Emscripten_SendEvent(const char* p_event, const char* p_json) void Emscripten_SendPresenterProgress(MxDSAction* p_action, MxPresenter::TickleState p_tickleState) { char buf[128]; - SDL_snprintf( + MORTAR_snprintf( buf, sizeof(buf), "{\"objectId\": %d, \"objectName\": \"%s\", \"tickleState\": %d}", @@ -40,7 +40,7 @@ void Emscripten_SendPresenterProgress(MxDSAction* p_action, MxPresenter::TickleS void Emscripten_SendExtensionProgress(const char* p_extension, MxU32 p_progress) { char buf[128]; - SDL_snprintf(buf, sizeof(buf), "{\"name\": \"%s\", \"progress\": %d}", p_extension, p_progress); + MORTAR_snprintf(buf, sizeof(buf), "{\"name\": \"%s\", \"progress\": %d}", p_extension, p_progress); Emscripten_SendEvent("extensionProgress", buf); } diff --git a/ISLE/emscripten/filesystem.cpp b/ISLE/emscripten/filesystem.cpp index e5644608..33c27e0e 100644 --- a/ISLE/emscripten/filesystem.cpp +++ b/ISLE/emscripten/filesystem.cpp @@ -7,10 +7,9 @@ #include "misc.h" #include "mxmain.h" -#include -#include #include #include +#include static backend_t opfs = nullptr; static backend_t fetchfs = nullptr; @@ -26,7 +25,7 @@ bool Emscripten_OPFSDisabled() bool Emscripten_SetupConfig(const char* p_iniConfig) { if (Emscripten_OPFSDisabled()) { - SDL_Log("OPFS is disabled; ignoring .ini path"); + MORTAR_Log("OPFS is disabled; ignoring .ini path"); return false; } @@ -34,7 +33,7 @@ bool Emscripten_SetupConfig(const char* p_iniConfig) MxString iniConfig = p_iniConfig; char* parse = iniConfig.GetData(); - while ((parse = SDL_strchr(++parse, '/'))) { + while ((parse = MORTAR_strchr(++parse, '/'))) { *parse = '\0'; wasmfs_create_directory(iniConfig.GetData(), 0644, opfs); *parse = '/'; @@ -64,22 +63,22 @@ void Emscripten_SetupFilesystem() MxString path = MxString(Emscripten_bundledPath) + MxString(p_path); path.MapPathToFilesystem(); - if (SDL_GetPathInfo(path.GetData(), NULL)) { - SDL_Log("File %s is bundled and won't be streamed", p_path); + if (MORTAR_GetPathInfo(path.GetData(), NULL)) { + MORTAR_Log("File %s is bundled and won't be streamed", p_path); } else { wasmfs_create_file(p_path, 0644, fetchfs); MxOmni::GetCDFiles().emplace_back(p_path); - SDL_Log("File %s set up for streaming", p_path); + MORTAR_Log("File %s set up for streaming", p_path); } }; const auto preloadFile = [](const char* p_path) -> bool { size_t length = 0; - void* data = SDL_LoadFile(p_path, &length); + void* data = MORTAR_LoadFile(p_path, &length); if (data) { - SDL_free(data); + MORTAR_free(data); } return length > 0; }; @@ -129,7 +128,7 @@ void Emscripten_SetupFilesystem() } char* parse = savePath.GetData(); - while ((parse = SDL_strchr(++parse, '/'))) { + while ((parse = MORTAR_strchr(++parse, '/'))) { *parse = '\0'; wasmfs_create_directory(savePath.GetData(), 0644, opfs); *parse = '/'; diff --git a/ISLE/emscripten/haptic.cpp b/ISLE/emscripten/haptic.cpp index 4a7244e5..29c633db 100644 --- a/ISLE/emscripten/haptic.cpp +++ b/ISLE/emscripten/haptic.cpp @@ -11,10 +11,10 @@ void Emscripten_HandleRumbleEvent(float p_lowFrequencyRumble, float p_highFreque { std::visit( overloaded{ - [](LegoInputManager::SDL_KeyboardID_v p_id) {}, - [](LegoInputManager::SDL_MouseID_v p_id) {}, - [p_lowFrequencyRumble, p_highFrequencyRumble, p_milliseconds](LegoInputManager::SDL_JoystickID_v p_id) { - const char* name = SDL_GetJoystickNameForID((SDL_JoystickID) p_id); + [](LegoInputManager::MORTAR_KeyboardID_v p_id) {}, + [](LegoInputManager::MORTAR_MouseID_v p_id) {}, + [p_lowFrequencyRumble, p_highFrequencyRumble, p_milliseconds](LegoInputManager::MORTAR_JoystickID_v p_id) { + const char* name = MORTAR_GetJoystickNameForID((MORTAR_JoystickID) p_id); if (name) { MAIN_THREAD_EM_ASM( { @@ -33,13 +33,13 @@ void Emscripten_HandleRumbleEvent(float p_lowFrequencyRumble, float p_highFreque } }, name, - SDL_clamp(p_lowFrequencyRumble, 0, 1), - SDL_clamp(p_highFrequencyRumble, 0, 1), + MORTAR_clamp(p_lowFrequencyRumble, 0, 1), + MORTAR_clamp(p_highFrequencyRumble, 0, 1), p_milliseconds ); } }, - [p_milliseconds](LegoInputManager::SDL_TouchID_v p_id) { + [p_milliseconds](LegoInputManager::MORTAR_TouchID_v p_id) { MAIN_THREAD_EM_ASM( { if (navigator.vibrate) { diff --git a/ISLE/emscripten/messagebox.cpp b/ISLE/emscripten/messagebox.cpp index 4977554c..62665a3e 100644 --- a/ISLE/emscripten/messagebox.cpp +++ b/ISLE/emscripten/messagebox.cpp @@ -3,10 +3,10 @@ #include bool Emscripten_ShowSimpleMessageBox( - SDL_MessageBoxFlags flags, + MORTAR_MessageBoxFlags flags, const char* title, const char* message, - SDL_Window* window + MORTAR_Window* window ) { MAIN_THREAD_EM_ASM({alert(UTF8ToString($0) + "\n\n" + UTF8ToString($1))}, title, message); diff --git a/ISLE/emscripten/messagebox.h b/ISLE/emscripten/messagebox.h index a944c64f..5b23d7a7 100644 --- a/ISLE/emscripten/messagebox.h +++ b/ISLE/emscripten/messagebox.h @@ -1,13 +1,13 @@ #ifndef EMSCRIPTEN_MESSAGE_BOX_H #define EMSCRIPTEN_MESSAGE_BOX_H -#include +#include bool Emscripten_ShowSimpleMessageBox( - SDL_MessageBoxFlags flags, + MORTAR_MessageBoxFlags flags, const char* title, const char* message, - SDL_Window* window + MORTAR_Window* window ); #endif // EMSCRIPTEN_MESSAGE_BOX_H diff --git a/ISLE/emscripten/window.cpp b/ISLE/emscripten/window.cpp index 05b5c8d2..c46195f2 100644 --- a/ISLE/emscripten/window.cpp +++ b/ISLE/emscripten/window.cpp @@ -2,9 +2,9 @@ #include "mxtypes.h" -#include #include #include +#include double g_fullWidth; double g_fullHeight; @@ -14,9 +14,9 @@ bool g_originalResolution = true; extern MxS32 g_targetWidth; extern MxS32 g_targetHeight; -void Emscripten_SetupWindow(SDL_Window* p_window) +void Emscripten_SetupWindow(MORTAR_Window* p_window) { - SDL_SetWindowResizable(p_window, false); + MORTAR_SetWindowResizable(p_window, false); EmscriptenFullscreenStrategy strategy; strategy.scaleMode = g_scaleAspect ? EMSCRIPTEN_FULLSCREEN_SCALE_ASPECT : EMSCRIPTEN_FULLSCREEN_SCALE_STRETCH; @@ -29,13 +29,13 @@ void Emscripten_SetupWindow(SDL_Window* p_window) emscripten_get_element_css_size("#canvas", &g_fullWidth, &g_fullHeight); if (g_originalResolution) { - SDL_SetWindowSize((SDL_Window*) userData, g_targetWidth, g_targetHeight); + MORTAR_SetWindowSize((MORTAR_Window*) userData, g_targetWidth, g_targetHeight); } else { - SDL_SetWindowSize((SDL_Window*) userData, width, height); + MORTAR_SetWindowSize((MORTAR_Window*) userData, width, height); } - SDL_Log( + MORTAR_Log( "Emscripten: window size %dx%d, canvas size %dx%d, scale aspect %s, original resolution %s", width, height, @@ -60,47 +60,47 @@ void Emscripten_SetOriginalResolution(bool p_originalResolution) g_originalResolution = p_originalResolution; } -void Emscripten_ConvertEventToRenderCoordinates(SDL_Event* event) +void Emscripten_ConvertEventToRenderCoordinates(MORTAR_Event* event) { if (!g_scaleAspect) { return; } switch (event->type) { - case SDL_EVENT_MOUSE_MOTION: { + case MORTAR_EVENT_MOUSE_MOTION: { const float scale = std::min(g_fullWidth / g_targetWidth, g_fullHeight / g_targetHeight); const float widthRatio = (g_targetWidth * scale) / g_fullWidth; const float heightRatio = (g_targetHeight * scale) / g_fullHeight; event->motion.x = (event->motion.x - (g_targetWidth * (1.0f - widthRatio) / 2.0f)) / widthRatio; - event->motion.x = SDL_clamp(event->motion.x, 0, g_targetWidth); + event->motion.x = MORTAR_clamp(event->motion.x, 0, g_targetWidth); event->motion.y = (event->motion.y - (g_targetHeight * (1.0f - heightRatio) / 2.0f)) / heightRatio; - event->motion.y = SDL_clamp(event->motion.y, 0, g_targetHeight); + event->motion.y = MORTAR_clamp(event->motion.y, 0, g_targetHeight); break; } - case SDL_EVENT_MOUSE_BUTTON_DOWN: - case SDL_EVENT_MOUSE_BUTTON_UP: { + case MORTAR_EVENT_MOUSE_BUTTON_DOWN: + case MORTAR_EVENT_MOUSE_BUTTON_UP: { const float scale = std::min(g_fullWidth / g_targetWidth, g_fullHeight / g_targetHeight); const float widthRatio = (g_targetWidth * scale) / g_fullWidth; const float heightRatio = (g_targetHeight * scale) / g_fullHeight; event->button.x = (event->button.x - (g_targetWidth * (1.0f - widthRatio) / 2.0f)) / widthRatio; - event->button.x = SDL_clamp(event->button.x, 0, g_targetWidth); + event->button.x = MORTAR_clamp(event->button.x, 0, g_targetWidth); event->button.y = (event->button.y - (g_targetHeight * (1.0f - heightRatio) / 2.0f)) / heightRatio; - event->button.y = SDL_clamp(event->button.y, 0, g_targetHeight); + event->button.y = MORTAR_clamp(event->button.y, 0, g_targetHeight); break; } - case SDL_EVENT_FINGER_MOTION: - case SDL_EVENT_FINGER_DOWN: - case SDL_EVENT_FINGER_UP: - case SDL_EVENT_FINGER_CANCELED: { + case MORTAR_EVENT_FINGER_MOTION: + case MORTAR_EVENT_FINGER_DOWN: + case MORTAR_EVENT_FINGER_UP: + case MORTAR_EVENT_FINGER_CANCELED: { const float scale = std::min(g_fullWidth / g_targetWidth, g_fullHeight / g_targetHeight); const float widthRatio = (g_targetWidth * scale) / g_fullWidth; const float heightRatio = (g_targetHeight * scale) / g_fullHeight; event->tfinger.x = (event->tfinger.x * g_targetWidth - (g_targetWidth * (1.0f - widthRatio) / 2.0f)) / widthRatio / g_targetWidth; - event->tfinger.x = SDL_clamp(event->tfinger.x, 0, 1); + event->tfinger.x = MORTAR_clamp(event->tfinger.x, 0, 1); event->tfinger.y = (event->tfinger.y * g_targetHeight - (g_targetHeight * (1.0f - heightRatio) / 2.0f)) / heightRatio / g_targetHeight; - event->tfinger.y = SDL_clamp(event->tfinger.y, 0, 1); + event->tfinger.y = MORTAR_clamp(event->tfinger.y, 0, 1); break; } } diff --git a/ISLE/emscripten/window.h b/ISLE/emscripten/window.h index 01b13ae4..3dda8fce 100644 --- a/ISLE/emscripten/window.h +++ b/ISLE/emscripten/window.h @@ -1,11 +1,11 @@ #ifndef EMSCRIPTEN_WINDOW_H #define EMSCRIPTEN_WINDOW_H -#include +#include -void Emscripten_SetupWindow(SDL_Window* p_window); +void Emscripten_SetupWindow(MORTAR_Window* p_window); void Emscripten_SetScaleAspect(bool p_scaleAspect); void Emscripten_SetOriginalResolution(bool p_originalResolution); -void Emscripten_ConvertEventToRenderCoordinates(SDL_Event* event); +void Emscripten_ConvertEventToRenderCoordinates(MORTAR_Event* event); #endif // EMSCRIPTEN_WINDOW_H diff --git a/ISLE/ios/config.cpp b/ISLE/ios/config.cpp index 22a17657..47cef5a8 100644 --- a/ISLE/ios/config.cpp +++ b/ISLE/ios/config.cpp @@ -2,22 +2,22 @@ #include "mxstring.h" -#include -#include #include +#include +#include void IOS_SetupDefaultConfigOverrides(dictionary* p_dictionary) { - SDL_Log("Overriding default config for iOS"); + MORTAR_Log("Overriding default config for iOS"); // Use DevelopmentFiles path for disk and cd paths // It's good to use that path since user can easily // connect through SMB and copy the files - MxString documentFolder = SDL_GetUserFolder(SDL_FOLDER_DOCUMENTS); + MxString documentFolder = MORTAR_GetUserFolder(MORTAR_FOLDER_DOCUMENTS); documentFolder += "isle"; - if (!SDL_GetPathInfo(documentFolder.GetData(), NULL)) { - SDL_CreateDirectory(documentFolder.GetData()); + if (!MORTAR_GetPathInfo(documentFolder.GetData(), NULL)) { + MORTAR_CreateDirectory(documentFolder.GetData()); } iniparser_set(p_dictionary, "isle:diskpath", documentFolder.GetData()); diff --git a/ISLE/isleapp.cpp b/ISLE/isleapp.cpp index 1df09cd8..4797aa7c 100644 --- a/ISLE/isleapp.cpp +++ b/ISLE/isleapp.cpp @@ -37,19 +37,17 @@ #include "viewmanager/viewmanager.h" #include -#include -#include -#include -#include - -#define SDL_MAIN_USE_CALLBACKS -#include -#include -#include #include +#include #include +#include +#include +#include +#include #include #include +#include +#include #ifdef __EMSCRIPTEN__ #include "emscripten/config.h" @@ -137,7 +135,7 @@ bool g_dpadRight = false; // STRING: ISLE 0x4101dc #define WINDOW_TITLE "LEGO®" -SDL_Window* window; +MORTAR_Window* window; extern const char* g_files[46]; @@ -216,11 +214,11 @@ IsleApp::~IsleApp() MxOmni::DestroyInstance(); } - SDL_free(m_hdPath); - SDL_free(m_cdPath); - SDL_free(m_deviceId); - SDL_free(m_savePath); - SDL_free(m_mediaPath); + MORTAR_free(m_hdPath); + MORTAR_free(m_cdPath); + MORTAR_free(m_deviceId); + MORTAR_free(m_savePath); + MORTAR_free(m_mediaPath); } // FUNCTION: ISLE 0x401260 @@ -232,7 +230,7 @@ void IsleApp::Close() if (Lego()) { GameState()->Save(0); if (InputManager()) { - InputManager()->QueueEvent(c_notificationKeyPress, 0, 0, 0, SDLK_SPACE); + InputManager()->QueueEvent(c_notificationKeyPress, 0, 0, 0, MORTARK_SPACE); } VideoManager()->Get3DManager()->GetLego3DView()->GetViewManager()->RemoveAll(NULL); @@ -306,34 +304,22 @@ void IsleApp::SetupVideoFlags( } } -SDL_AppResult SDL_AppInit(void** appstate, int argc, char** argv) +MORTAR_AppResult MORTAR_AppInit(void** appstate, int argc, char** argv) { *appstate = NULL; - { - int version = SDL_GetVersion(); - SDL_Log( - "SDL version %d.%d.%d (%s)", - SDL_VERSIONNUM_MAJOR(version), - SDL_VERSIONNUM_MINOR(version), - SDL_VERSIONNUM_MICRO(version), - SDL_GetRevision() - ); - } + MORTAR_Log("MORTAR backend: %s", MORTAR_GetBackendDescription()); - SDL_SetHint(SDL_HINT_MOUSE_TOUCH_EVENTS, "0"); - SDL_SetHint(SDL_HINT_TOUCH_MOUSE_EVENTS, "0"); - - if (!SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_GAMEPAD | SDL_INIT_HAPTIC)) { + if (!MORTAR_Init()) { char buffer[256]; - SDL_snprintf( + MORTAR_snprintf( buffer, sizeof(buffer), - "\"LEGO® Island\" failed to start.\nPlease quit all other applications and try again.\nSDL error: %s", - SDL_GetError() + "\"LEGO® Island\" failed to start.\nPlease quit all other applications and try again.\nMORTAR error: %s", + MORTAR_GetError() ); - Any_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "LEGO® Island Error", buffer, NULL); - return SDL_APP_FAILURE; + Any_ShowSimpleMessageBox(MORTAR_MESSAGEBOX_ERROR, "LEGO® Island Error", buffer, NULL); + return MORTAR_APP_FAILURE; } // [library:window] @@ -361,38 +347,38 @@ SDL_AppResult SDL_AppInit(void** appstate, int argc, char** argv) #endif switch (g_isle->ParseArguments(argc, argv)) { - case SDL_APP_FAILURE: + case MORTAR_APP_FAILURE: Any_ShowSimpleMessageBox( - SDL_MESSAGEBOX_ERROR, + MORTAR_MESSAGEBOX_ERROR, "LEGO® Island Error", "\"LEGO® Island\" failed to start. Invalid CLI arguments.", window ); - return SDL_APP_FAILURE; - case SDL_APP_SUCCESS: - return SDL_APP_SUCCESS; - case SDL_APP_CONTINUE: + return MORTAR_APP_FAILURE; + case MORTAR_APP_SUCCESS: + return MORTAR_APP_SUCCESS; + case MORTAR_APP_CONTINUE: break; } // Create window if (g_isle->SetupWindow() != SUCCESS) { Any_ShowSimpleMessageBox( - SDL_MESSAGEBOX_ERROR, + MORTAR_MESSAGEBOX_ERROR, "LEGO® Island Error", "\"LEGO® Island\" failed to start.\nPlease quit all other applications and try again.", window ); - return SDL_APP_FAILURE; + return MORTAR_APP_FAILURE; } // Get reference to window *appstate = g_isle->GetWindowHandle(); #ifdef __EMSCRIPTEN__ - SDL_AddEventWatch( - [](void* userdata, SDL_Event* event) -> bool { - if (event->type == SDL_EVENT_TERMINATING && g_isle && g_isle->GetGameStarted()) { + MORTAR_AddEventWatch( + [](void* userdata, MORTAR_Event* event) -> bool { + if (event->type == MORTAR_EVENT_TERMINATING && g_isle && g_isle->GetGameStarted()) { GameState()->Save(0); return false; } @@ -405,24 +391,24 @@ SDL_AppResult SDL_AppInit(void** appstate, int argc, char** argv) #ifdef __3DS__ N3DS_SetupAptHooks(); #endif - return SDL_APP_CONTINUE; + return MORTAR_APP_CONTINUE; } -SDL_AppResult SDL_AppIterate(void* appstate) +MORTAR_AppResult MORTAR_AppIterate(void* appstate) { if (g_closed) { - return SDL_APP_SUCCESS; + return MORTAR_APP_SUCCESS; } if (!g_isle->Tick()) { Any_ShowSimpleMessageBox( - SDL_MESSAGEBOX_ERROR, + MORTAR_MESSAGEBOX_ERROR, "LEGO® Island Error", "\"LEGO® Island\" failed to start.\nPlease quit all other applications and try again." "\nFailed to initialize; see logs for details", NULL ); - return SDL_APP_FAILURE; + return MORTAR_APP_FAILURE; } if (!g_closed) { @@ -434,19 +420,19 @@ SDL_AppResult SDL_AppIterate(void* appstate) } if (g_closed) { - return SDL_APP_SUCCESS; + return MORTAR_APP_SUCCESS; } if (g_mousedown && g_mousemoved && g_isle) { if (!g_isle->Tick()) { Any_ShowSimpleMessageBox( - SDL_MESSAGEBOX_ERROR, + MORTAR_MESSAGEBOX_ERROR, "LEGO® Island Error", "\"LEGO® Island\" failed to start.\nPlease quit all other applications and try again." "\nFailed to initialize; see logs for details", NULL ); - return SDL_APP_FAILURE; + return MORTAR_APP_FAILURE; } } @@ -457,13 +443,13 @@ SDL_AppResult SDL_AppIterate(void* appstate) g_isle->MoveVirtualMouseViaJoystick(); } - return SDL_APP_CONTINUE; + return MORTAR_APP_CONTINUE; } -SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) +MORTAR_AppResult MORTAR_AppEvent(void* appstate, MORTAR_Event* event) { if (!g_isle) { - return SDL_APP_CONTINUE; + return MORTAR_APP_CONTINUE; } if (InputManager()) { @@ -471,18 +457,18 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) } switch (event->type) { - case SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED: - case SDL_EVENT_MOUSE_MOTION: - case SDL_EVENT_MOUSE_BUTTON_DOWN: - case SDL_EVENT_MOUSE_BUTTON_UP: - case SDL_EVENT_FINGER_MOTION: - case SDL_EVENT_FINGER_DOWN: - case SDL_EVENT_FINGER_UP: - case SDL_EVENT_FINGER_CANCELED: + case MORTAR_EVENT_WINDOW_PIXEL_SIZE_CHANGED: + case MORTAR_EVENT_MOUSE_MOTION: + case MORTAR_EVENT_MOUSE_BUTTON_DOWN: + case MORTAR_EVENT_MOUSE_BUTTON_UP: + case MORTAR_EVENT_FINGER_MOTION: + case MORTAR_EVENT_FINGER_DOWN: + case MORTAR_EVENT_FINGER_UP: + case MORTAR_EVENT_FINGER_CANCELED: IDirect3DRMMiniwinDevice* device = GetD3DRMMiniwinDevice(); if (device) { if (!device->ConvertEventToRenderCoordinates(event)) { - SDL_Log("Failed to convert event coordinates: %s", SDL_GetError()); + MORTAR_Log("Failed to convert event coordinates: %s", MORTAR_GetError()); } device->Release(); @@ -497,24 +483,24 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) #ifdef __vita__ // reject back touch panel switch (event->type) { - case SDL_EVENT_FINGER_MOTION: - case SDL_EVENT_FINGER_DOWN: - case SDL_EVENT_FINGER_UP: - case SDL_EVENT_FINGER_CANCELED: + case MORTAR_EVENT_FINGER_MOTION: + case MORTAR_EVENT_FINGER_DOWN: + case MORTAR_EVENT_FINGER_UP: + case MORTAR_EVENT_FINGER_CANCELED: if (event->tfinger.touchID == 2) { - return SDL_APP_CONTINUE; + return MORTAR_APP_CONTINUE; } } #endif switch (event->type) { - case SDL_EVENT_WINDOW_FOCUS_GAINED: + case MORTAR_EVENT_WINDOW_FOCUS_GAINED: if (!g_isle->GetActiveInBackground()) { g_isle->SetWindowActive(TRUE); Lego()->Resume(); } break; - case SDL_EVENT_WINDOW_FOCUS_LOST: + case MORTAR_EVENT_WINDOW_FOCUS_LOST: if (!g_isle->GetActiveInBackground() && g_isle->GetGameStarted()) { g_isle->SetWindowActive(FALSE); Lego()->Pause(); @@ -523,23 +509,23 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) #endif } break; - case SDL_EVENT_WINDOW_CLOSE_REQUESTED: - case SDL_EVENT_QUIT: + case MORTAR_EVENT_WINDOW_CLOSE_REQUESTED: + case MORTAR_EVENT_QUIT: if (!g_closed) { delete g_isle; g_isle = NULL; g_closed = TRUE; } break; - case SDL_EVENT_KEY_DOWN: { + case MORTAR_EVENT_KEY_DOWN: { if (event->key.repeat) { break; } - SDL_Keycode keyCode = event->key.key; + MORTAR_Keycode keyCode = event->key.key; - if ((event->key.mod & SDL_KMOD_LALT) && keyCode == SDLK_RETURN) { - SDL_SetWindowFullscreen(window, !(SDL_GetWindowFlags(window) & SDL_WINDOW_FULLSCREEN)); + if ((event->key.mod & MORTAR_KMOD_LALT) && keyCode == MORTARK_RETURN) { + MORTAR_SetWindowFullscreen(window, !(MORTAR_GetWindowFlags(window) & MORTAR_WINDOW_FULLSCREEN)); } else { if (InputManager()) { @@ -548,51 +534,51 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) } break; } - case SDL_EVENT_KEYBOARD_ADDED: + case MORTAR_EVENT_KEYBOARD_ADDED: if (InputManager()) { InputManager()->AddKeyboard(event->kdevice.which); } break; - case SDL_EVENT_KEYBOARD_REMOVED: + case MORTAR_EVENT_KEYBOARD_REMOVED: if (InputManager()) { InputManager()->RemoveKeyboard(event->kdevice.which); } break; - case SDL_EVENT_MOUSE_ADDED: + case MORTAR_EVENT_MOUSE_ADDED: if (InputManager()) { InputManager()->AddMouse(event->mdevice.which); } break; - case SDL_EVENT_MOUSE_REMOVED: + case MORTAR_EVENT_MOUSE_REMOVED: if (InputManager()) { InputManager()->RemoveMouse(event->mdevice.which); } break; - case SDL_EVENT_GAMEPAD_ADDED: + case MORTAR_EVENT_GAMEPAD_ADDED: if (InputManager()) { InputManager()->AddJoystick(event->jdevice.which); } break; - case SDL_EVENT_GAMEPAD_REMOVED: + case MORTAR_EVENT_GAMEPAD_REMOVED: if (InputManager()) { InputManager()->RemoveJoystick(event->jdevice.which); } break; - case SDL_EVENT_GAMEPAD_BUTTON_DOWN: { + case MORTAR_EVENT_GAMEPAD_BUTTON_DOWN: { switch (event->gbutton.button) { - case SDL_GAMEPAD_BUTTON_DPAD_UP: + case MORTAR_GAMEPAD_BUTTON_DPAD_UP: g_dpadUp = true; break; - case SDL_GAMEPAD_BUTTON_DPAD_DOWN: + case MORTAR_GAMEPAD_BUTTON_DPAD_DOWN: g_dpadDown = true; break; - case SDL_GAMEPAD_BUTTON_DPAD_LEFT: + case MORTAR_GAMEPAD_BUTTON_DPAD_LEFT: g_dpadLeft = true; break; - case SDL_GAMEPAD_BUTTON_DPAD_RIGHT: + case MORTAR_GAMEPAD_BUTTON_DPAD_RIGHT: g_dpadRight = true; break; - case SDL_GAMEPAD_BUTTON_EAST: + case MORTAR_GAMEPAD_BUTTON_EAST: g_mousedown = TRUE; if (InputManager()) { InputManager()->QueueEvent( @@ -605,40 +591,40 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) } break; - case SDL_GAMEPAD_BUTTON_SOUTH: + case MORTAR_GAMEPAD_BUTTON_SOUTH: if (InputManager()) { - InputManager()->QueueEvent(c_notificationKeyPress, SDLK_SPACE, 0, 0, SDLK_SPACE); + InputManager()->QueueEvent(c_notificationKeyPress, MORTARK_SPACE, 0, 0, MORTARK_SPACE); } break; #ifdef __vita__ // conflicts with screenshot button combination - case SDL_GAMEPAD_BUTTON_BACK: + case MORTAR_GAMEPAD_BUTTON_BACK: #else - case SDL_GAMEPAD_BUTTON_START: + case MORTAR_GAMEPAD_BUTTON_START: #endif if (InputManager()) { - InputManager()->QueueEvent(c_notificationKeyPress, SDLK_ESCAPE, 0, 0, SDLK_ESCAPE); + InputManager()->QueueEvent(c_notificationKeyPress, MORTARK_ESCAPE, 0, 0, MORTARK_ESCAPE); } break; } break; } - case SDL_EVENT_GAMEPAD_BUTTON_UP: { + case MORTAR_EVENT_GAMEPAD_BUTTON_UP: { switch (event->gbutton.button) { - case SDL_GAMEPAD_BUTTON_DPAD_UP: + case MORTAR_GAMEPAD_BUTTON_DPAD_UP: g_dpadUp = false; break; - case SDL_GAMEPAD_BUTTON_DPAD_DOWN: + case MORTAR_GAMEPAD_BUTTON_DPAD_DOWN: g_dpadDown = false; break; - case SDL_GAMEPAD_BUTTON_DPAD_LEFT: + case MORTAR_GAMEPAD_BUTTON_DPAD_LEFT: g_dpadLeft = false; break; - case SDL_GAMEPAD_BUTTON_DPAD_RIGHT: + case MORTAR_GAMEPAD_BUTTON_DPAD_RIGHT: g_dpadRight = false; break; - case SDL_GAMEPAD_BUTTON_EAST: + case MORTAR_GAMEPAD_BUTTON_EAST: g_mousedown = FALSE; if (InputManager()) { InputManager()->QueueEvent( @@ -653,19 +639,19 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) } break; } - case SDL_EVENT_GAMEPAD_AXIS_MOTION: { + case MORTAR_EVENT_GAMEPAD_AXIS_MOTION: { MxS16 axisValue = 0; if (event->gaxis.value < -8000 || event->gaxis.value > 8000) { // Ignore small axis values axisValue = event->gaxis.value; } - if (event->gaxis.axis == SDL_GAMEPAD_AXIS_RIGHTX) { - g_lastJoystickMouseX = ((MxFloat) axisValue) / SDL_JOYSTICK_AXIS_MAX * g_isle->GetCursorSensitivity(); + if (event->gaxis.axis == MORTAR_GAMEPAD_AXIS_RIGHTX) { + g_lastJoystickMouseX = ((MxFloat) axisValue) / MORTAR_JOYSTICK_AXIS_MAX * g_isle->GetCursorSensitivity(); } - else if (event->gaxis.axis == SDL_GAMEPAD_AXIS_RIGHTY) { - g_lastJoystickMouseY = ((MxFloat) axisValue) / SDL_JOYSTICK_AXIS_MAX * g_isle->GetCursorSensitivity(); + else if (event->gaxis.axis == MORTAR_GAMEPAD_AXIS_RIGHTY) { + g_lastJoystickMouseY = ((MxFloat) axisValue) / MORTAR_JOYSTICK_AXIS_MAX * g_isle->GetCursorSensitivity(); } - else if (event->gaxis.axis == SDL_GAMEPAD_AXIS_RIGHT_TRIGGER) { + else if (event->gaxis.axis == MORTAR_GAMEPAD_AXIS_RIGHT_TRIGGER) { if (axisValue != 0 && !g_mousedown) { g_mousedown = TRUE; @@ -695,7 +681,7 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) } break; } - case SDL_EVENT_MOUSE_MOTION: + case MORTAR_EVENT_MOUSE_MOTION: if (g_mouseWarped) { g_mouseWarped = FALSE; break; @@ -716,13 +702,13 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) g_lastMouseX = event->motion.x; g_lastMouseY = event->motion.y; - SDL_ShowCursor(); + MORTAR_ShowCursor(); g_isle->SetDrawCursor(FALSE); if (VideoManager()) { VideoManager()->SetCursorBitmap(NULL); } break; - case SDL_EVENT_FINGER_MOTION: { + case MORTAR_EVENT_FINGER_MOTION: { g_mousemoved = TRUE; float x = event->tfinger.x * g_targetWidth; @@ -740,27 +726,27 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) g_lastMouseX = x; g_lastMouseY = y; - SDL_HideCursor(); + MORTAR_HideCursor(); g_isle->SetDrawCursor(FALSE); if (VideoManager()) { VideoManager()->SetCursorBitmap(NULL); } break; } - case SDL_EVENT_MOUSE_BUTTON_DOWN: + case MORTAR_EVENT_MOUSE_BUTTON_DOWN: g_mousedown = TRUE; if (InputManager()) { InputManager()->QueueEvent( c_notificationButtonDown, - IsleApp::MapMouseButtonFlagsToModifier(SDL_GetMouseState(NULL, NULL)), + IsleApp::MapMouseButtonFlagsToModifier(MORTAR_GetMouseState(NULL, NULL)), event->button.x, event->button.y, 0 ); } break; - case SDL_EVENT_FINGER_DOWN: { + case MORTAR_EVENT_FINGER_DOWN: { g_mousedown = TRUE; float x = event->tfinger.x * g_targetWidth; @@ -774,28 +760,28 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) g_lastMouseX = x; g_lastMouseY = y; - SDL_HideCursor(); + MORTAR_HideCursor(); g_isle->SetDrawCursor(FALSE); if (VideoManager()) { VideoManager()->SetCursorBitmap(NULL); } break; } - case SDL_EVENT_MOUSE_BUTTON_UP: + case MORTAR_EVENT_MOUSE_BUTTON_UP: g_mousedown = FALSE; if (InputManager()) { InputManager()->QueueEvent( c_notificationButtonUp, - IsleApp::MapMouseButtonFlagsToModifier(SDL_GetMouseState(NULL, NULL)), + IsleApp::MapMouseButtonFlagsToModifier(MORTAR_GetMouseState(NULL, NULL)), event->button.x, event->button.y, 0 ); } break; - case SDL_EVENT_FINGER_UP: - case SDL_EVENT_FINGER_CANCELED: { + case MORTAR_EVENT_FINGER_UP: + case MORTAR_EVENT_FINGER_CANCELED: { g_mousedown = FALSE; float x = event->tfinger.x * g_targetWidth; @@ -822,7 +808,11 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) } break; default: - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Unknown SDL Windows message: 0x%" SDL_PRIx32, event->user.code); + MORTAR_LogError( + MORTAR_LOG_CATEGORY_APPLICATION, + "Unknown MORTAR Windows message: 0x%" PRIX32, + event->user.code + ); break; } } @@ -837,14 +827,14 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) #endif if (!g_isle->GetGameStarted() && action && state == MxPresenter::e_ready && - !SDL_strncmp(action->GetObjectName(), "Lego_Smk", 8)) { + !MORTAR_strncmp(action->GetObjectName(), "Lego_Smk", 8)) { g_isle->SetGameStarted(TRUE); #ifdef __EMSCRIPTEN__ - Emscripten_SetupWindow((SDL_Window*) g_isle->GetWindowHandle()); + Emscripten_SetupWindow((MORTAR_Window*) g_isle->GetWindowHandle()); #endif - SDL_Log("Game started"); + MORTAR_Log("Game started"); } } else if (event->user.type == g_legoSdlEvents.m_gameEvent) { @@ -875,29 +865,29 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) } } - return SDL_APP_CONTINUE; + return MORTAR_APP_CONTINUE; } -void SDL_AppQuit(void* appstate, SDL_AppResult result) +void MORTAR_AppQuit(void* appstate, MORTAR_AppResult result) { if (appstate != NULL) { - SDL_DestroyWindow((SDL_Window*) appstate); + MORTAR_DestroyWindow((MORTAR_Window*) appstate); } - SDL_Quit(); + MORTAR_Quit(); } -MxU8 IsleApp::MapMouseButtonFlagsToModifier(SDL_MouseButtonFlags p_flags) +MxU8 IsleApp::MapMouseButtonFlagsToModifier(MORTAR_MouseButtonFlags p_flags) { // [library:window] // Map button states to Windows button states (LegoEventNotificationParam) // Not mapping mod keys SHIFT and CTRL since they are not used by the game. MxU8 modifier = 0; - if (p_flags & SDL_BUTTON_LMASK) { + if (p_flags & MORTAR_BUTTON_LMASK) { modifier |= LegoEventNotificationParam::c_lButtonState; } - if (p_flags & SDL_BUTTON_RMASK) { + if (p_flags & MORTAR_BUTTON_RMASK) { modifier |= LegoEventNotificationParam::c_rButtonState; } @@ -928,32 +918,32 @@ MxResult IsleApp::SetupWindow() srand(time(NULL)); // [library:window] Use original game cursors in the resources instead? - m_cursorCurrent = m_cursorArrow = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_DEFAULT); - m_cursorBusy = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_WAIT); - m_cursorNo = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_NOT_ALLOWED); - SDL_SetCursor(m_cursorCurrent); + m_cursorCurrent = m_cursorArrow = MORTAR_CreateSystemCursor(MORTAR_SYSTEM_CURSOR_DEFAULT); + m_cursorBusy = MORTAR_CreateSystemCursor(MORTAR_SYSTEM_CURSOR_WAIT); + m_cursorNo = MORTAR_CreateSystemCursor(MORTAR_SYSTEM_CURSOR_NOT_ALLOWED); + MORTAR_SetCursor(m_cursorCurrent); m_cursorCurrentBitmap = m_cursorArrowBitmap = &arrow_cursor; m_cursorBusyBitmap = &busy_cursor; m_cursorNoBitmap = &no_cursor; - SDL_PropertiesID props = SDL_CreateProperties(); - SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_WIDTH_NUMBER, g_targetWidth); - SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_HEIGHT_NUMBER, g_targetHeight); - SDL_SetBooleanProperty(props, SDL_PROP_WINDOW_CREATE_FULLSCREEN_BOOLEAN, m_fullScreen); - SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING, WINDOW_TITLE); + MORTAR_EX_CreateWindowProps createWindowProps = {}; + createWindowProps.width = g_targetWidth; + createWindowProps.height = g_targetHeight; + createWindowProps.fullscreen = m_fullScreen; + createWindowProps.title = WINDOW_TITLE; #if defined(MINIWIN) && !defined(__3DS__) && !defined(WINDOWS_STORE) && !defined(__vita__) - SDL_SetBooleanProperty(props, SDL_PROP_WINDOW_CREATE_OPENGL_BOOLEAN, true); - SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); - SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); + createWindowProps.opengl.enabled = true; + createWindowProps.opengl.doublebuffer = true; + createWindowProps.opengl.depth_size = 24; #endif - window = SDL_CreateWindowWithProperties(props); - SDL_SetPointerProperty(SDL_GetWindowProperties(window), ISLE_PROP_WINDOW_CREATE_VIDEO_PARAM, &m_videoParam); + window = MORTAR_EX_CreateWindow(&createWindowProps); + MORTAR_EXT_SetWindowProperty(window, MORTAR_WINDOW_PROPERTY_USER, &m_videoParam); if (m_exclusiveFullScreen && m_fullScreen) { - SDL_DisplayMode closestMode; - SDL_DisplayID displayID = SDL_GetDisplayForWindow(window); - if (SDL_GetClosestFullscreenDisplayMode( + MORTAR_DisplayMode closestMode; + MORTAR_DisplayID displayID = MORTAR_GetDisplayForWindow(window); + if (MORTAR_GetClosestFullscreenDisplayMode( displayID, m_exclusiveXRes, m_exclusiveYRes, @@ -961,38 +951,39 @@ MxResult IsleApp::SetupWindow() true, &closestMode )) { - SDL_SetWindowFullscreenMode(window, &closestMode); + MORTAR_SetWindowFullscreenMode(window, &closestMode); } } #ifdef MINIWIN m_windowHandle = reinterpret_cast(window); #else - m_windowHandle = - (HWND) SDL_GetPointerProperty(SDL_GetWindowProperties(window), SDL_PROP_WINDOW_WIN32_HWND_POINTER, NULL); + m_windowHandle = (HWND) MORTAR_EXT_GetWindowProperty(window, MORTAR_WINDOW_PROPERTY_HWND, NULL); #endif - SDL_DestroyProperties(props); - if (!m_windowHandle) { return FAILURE; } - SDL_IOStream* icon_stream = SDL_IOFromMem(isle_bmp, isle_bmp_len); + MORTAR_IOStream* icon_stream = MORTAR_IOFromMem(isle_bmp, isle_bmp_len); if (icon_stream) { - SDL_Surface* icon = SDL_LoadBMP_IO(icon_stream, true); + MORTAR_Surface* icon = MORTAR_LoadBMP_IO(icon_stream, true); if (icon) { - SDL_SetWindowIcon(window, icon); - SDL_DestroySurface(icon); + MORTAR_SetWindowIcon(window, icon); + MORTAR_DestroySurface(icon); } else { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to load icon: %s", SDL_GetError()); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to load icon: %s", MORTAR_GetError()); } } else { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to open SDL_IOStream for icon: %s", SDL_GetError()); + MORTAR_LogError( + MORTAR_LOG_CATEGORY_APPLICATION, + "Failed to open MORTAR_IOStream for icon: %s", + MORTAR_GetError() + ); } if (!SetupLegoOmni()) { @@ -1038,14 +1029,14 @@ MxResult IsleApp::SetupWindow() } MxDirect3D* d3d = LegoOmni::GetInstance()->GetVideoManager()->GetDirect3D(); if (d3d) { - SDL_Log( + MORTAR_Log( "Direct3D driver name=\"%s\" description=\"%s\"", d3d->GetDeviceName().c_str(), d3d->GetDeviceDescription().c_str() ); } else { - SDL_LogWarn(SDL_LOG_CATEGORY_APPLICATION, "Failed to get D3D device name and description"); + MORTAR_LogWarn(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to get D3D device name and description"); } if (LegoOmni::GetInstance()->GetInputManager()) { LegoOmni::GetInstance()->GetInputManager()->SetWasd(m_wasd); @@ -1059,17 +1050,17 @@ MxResult IsleApp::SetupWindow() bool IsleApp::LoadConfig() { #ifdef IOS - const char* prefPath = SDL_GetUserFolder(SDL_FOLDER_DOCUMENTS); + const char* prefPath = MORTAR_GetUserFolder(MORTAR_FOLDER_DOCUMENTS); #elif defined(ANDROID) - MxString androidPath = MxString(SDL_GetAndroidExternalStoragePath()) + "/"; + MxString androidPath = MxString(MORTAR_GetAndroidExternalStoragePath()) + "/"; const char* prefPath = androidPath.GetData(); #elif defined(EMSCRIPTEN) if (m_iniPath && !Emscripten_SetupConfig(m_iniPath)) { m_iniPath = NULL; } - char* prefPath = SDL_GetPrefPath("isledecomp", "isle"); + char* prefPath = MORTAR_GetPrefPath("isledecomp", "isle"); #else - char* prefPath = SDL_GetPrefPath("isledecomp", "isle"); + char* prefPath = MORTAR_GetPrefPath("isledecomp", "isle"); #endif MxString iniConfig; @@ -1084,7 +1075,7 @@ bool IsleApp::LoadConfig() iniConfig = "isle.ini"; } - SDL_Log("Reading configuration from \"%s\"", iniConfig.GetData()); + MORTAR_Log("Reading configuration from \"%s\"", iniConfig.GetData()); dictionary* dict = iniparser_load(iniConfig.GetData()); @@ -1094,16 +1085,16 @@ bool IsleApp::LoadConfig() iniparser_freedict(dict); if (m_iniPath) { - SDL_Log("Invalid config path '%s'", m_iniPath); + MORTAR_Log("Invalid config path '%s'", m_iniPath); return false; } - SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Loading sane defaults"); + MORTAR_LogInfo(MORTAR_LOG_CATEGORY_APPLICATION, "Loading sane defaults"); FILE* iniFP = fopen(iniConfig.GetData(), "wb"); if (!iniFP) { - SDL_LogError( - SDL_LOG_CATEGORY_APPLICATION, + MORTAR_LogError( + MORTAR_LOG_CATEGORY_APPLICATION, "Failed to write config at '%s': %s", iniConfig.GetData(), strerror(errno) @@ -1115,9 +1106,9 @@ bool IsleApp::LoadConfig() dict = dictionary_new(0); iniparser_set(dict, "isle", NULL); - iniparser_set(dict, "isle:diskpath", SDL_GetBasePath()); + iniparser_set(dict, "isle:diskpath", MORTAR_GetBasePath()); iniparser_set(dict, "isle:cdpath", MxOmni::GetCD()); - iniparser_set(dict, "isle:mediapath", SDL_GetBasePath()); + iniparser_set(dict, "isle:mediapath", MORTAR_GetBasePath()); iniparser_set(dict, "isle:savepath", prefPath); iniparser_set(dict, "isle:Flip Surfaces", m_flipSurfaces ? "true" : "false"); @@ -1128,28 +1119,28 @@ bool IsleApp::LoadConfig() iniparser_set(dict, "isle:3DSound", m_use3dSound ? "true" : "false"); iniparser_set(dict, "isle:Music", m_useMusic ? "true" : "false"); - SDL_snprintf(buf, sizeof(buf), "%f", m_cursorSensitivity); + MORTAR_snprintf(buf, sizeof(buf), "%f", m_cursorSensitivity); iniparser_set(dict, "isle:Cursor Sensitivity", buf); iniparser_set(dict, "isle:Back Buffers in Video RAM", "-1"); - iniparser_set(dict, "isle:Island Quality", SDL_itoa(m_islandQuality, buf, 10)); - iniparser_set(dict, "isle:Island Texture", SDL_itoa(m_islandTexture, buf, 10)); - SDL_snprintf(buf, sizeof(buf), "%f", m_maxLod); + iniparser_set(dict, "isle:Island Quality", MORTAR_itoa(m_islandQuality, buf, 10)); + iniparser_set(dict, "isle:Island Texture", MORTAR_itoa(m_islandTexture, buf, 10)); + MORTAR_snprintf(buf, sizeof(buf), "%f", m_maxLod); iniparser_set(dict, "isle:Max LOD", buf); - iniparser_set(dict, "isle:Max Allowed Extras", SDL_itoa(m_maxAllowedExtras, buf, 10)); - iniparser_set(dict, "isle:Transition Type", SDL_itoa(m_transitionType, buf, 10)); - iniparser_set(dict, "isle:Touch Scheme", SDL_itoa(m_touchScheme, buf, 10)); + iniparser_set(dict, "isle:Max Allowed Extras", MORTAR_itoa(m_maxAllowedExtras, buf, 10)); + iniparser_set(dict, "isle:Transition Type", MORTAR_itoa(m_transitionType, buf, 10)); + iniparser_set(dict, "isle:Touch Scheme", MORTAR_itoa(m_touchScheme, buf, 10)); iniparser_set(dict, "isle:Haptic", m_haptic ? "true" : "false"); iniparser_set(dict, "isle:WASD", m_wasd ? "true" : "false"); - iniparser_set(dict, "isle:Horizontal Resolution", SDL_itoa(m_xRes, buf, 10)); - iniparser_set(dict, "isle:Vertical Resolution", SDL_itoa(m_yRes, buf, 10)); - iniparser_set(dict, "isle:Exclusive X Resolution", SDL_itoa(m_exclusiveXRes, buf, 10)); - iniparser_set(dict, "isle:Exclusive Y Resolution", SDL_itoa(m_exclusiveYRes, buf, 10)); - iniparser_set(dict, "isle:Exclusive Framerate", SDL_itoa(m_exclusiveFrameRate, buf, 10)); - iniparser_set(dict, "isle:Frame Delta", SDL_itoa(m_frameDelta, buf, 10)); - iniparser_set(dict, "isle:MSAA", SDL_itoa(m_msaaSamples, buf, 10)); - iniparser_set(dict, "isle:Anisotropic", SDL_itoa(m_anisotropic, buf, 10)); + iniparser_set(dict, "isle:Horizontal Resolution", MORTAR_itoa(m_xRes, buf, 10)); + iniparser_set(dict, "isle:Vertical Resolution", MORTAR_itoa(m_yRes, buf, 10)); + iniparser_set(dict, "isle:Exclusive X Resolution", MORTAR_itoa(m_exclusiveXRes, buf, 10)); + iniparser_set(dict, "isle:Exclusive Y Resolution", MORTAR_itoa(m_exclusiveYRes, buf, 10)); + iniparser_set(dict, "isle:Exclusive Framerate", MORTAR_itoa(m_exclusiveFrameRate, buf, 10)); + iniparser_set(dict, "isle:Frame Delta", MORTAR_itoa(m_frameDelta, buf, 10)); + iniparser_set(dict, "isle:MSAA", MORTAR_itoa(m_msaaSamples, buf, 10)); + iniparser_set(dict, "isle:Anisotropic", MORTAR_itoa(m_anisotropic, buf, 10)); iniparser_set(dict, "isle:Active in background", m_activeInBackground ? "true" : "false"); #ifdef EXTENSIONS @@ -1179,7 +1170,7 @@ bool IsleApp::LoadConfig() VITA_SetupDefaultConfigOverrides(dict); #endif iniparser_dump_ini(dict, iniFP); - SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "New config written at '%s'", iniConfig.GetData()); + MORTAR_LogInfo(MORTAR_LOG_CATEGORY_APPLICATION, "New config written at '%s'", iniConfig.GetData()); fclose(iniFP); } @@ -1187,10 +1178,10 @@ bool IsleApp::LoadConfig() Emscripten_SetupDefaultConfigOverrides(dict); #endif - MxOmni::SetHD((m_hdPath = SDL_strdup(iniparser_getstring(dict, "isle:diskpath", SDL_GetBasePath())))); - MxOmni::SetCD((m_cdPath = SDL_strdup(iniparser_getstring(dict, "isle:cdpath", MxOmni::GetCD())))); - m_savePath = SDL_strdup(iniparser_getstring(dict, "isle:savepath", prefPath)); - m_mediaPath = SDL_strdup(iniparser_getstring(dict, "isle:mediapath", m_hdPath)); + MxOmni::SetHD((m_hdPath = MORTAR_strdup(iniparser_getstring(dict, "isle:diskpath", MORTAR_GetBasePath())))); + MxOmni::SetCD((m_cdPath = MORTAR_strdup(iniparser_getstring(dict, "isle:cdpath", MxOmni::GetCD())))); + m_savePath = MORTAR_strdup(iniparser_getstring(dict, "isle:savepath", prefPath)); + m_mediaPath = MORTAR_strdup(iniparser_getstring(dict, "isle:mediapath", m_hdPath)); m_flipSurfaces = iniparser_getboolean(dict, "isle:Flip Surfaces", m_flipSurfaces); m_fullScreen = iniparser_getboolean(dict, "isle:Full Screen", m_fullScreen); m_exclusiveFullScreen = iniparser_getboolean(dict, "isle:Exclusive Full Screen", m_exclusiveFullScreen); @@ -1239,14 +1230,14 @@ bool IsleApp::LoadConfig() const char* deviceId = iniparser_getstring(dict, "isle:3D Device ID", NULL); if (deviceId != NULL) { - m_deviceId = SDL_strdup(deviceId); + m_deviceId = MORTAR_strdup(deviceId); } #ifdef EXTENSIONS for (const char* key : Extensions::availableExtensions) { if (iniparser_getboolean(dict, key, 0)) { std::vector extensionKeys; - const char* section = SDL_strchr(key, ':') + 1; + const char* section = MORTAR_strchr(key, ':') + 1; extensionKeys.resize(iniparser_getsecnkeys(dict, section)); iniparser_getseckeys(dict, section, extensionKeys.data()); @@ -1264,7 +1255,7 @@ bool IsleApp::LoadConfig() [](auto path) { if constexpr (std::is_same_v) { - SDL_free(path); + MORTAR_free(path); } }(prefPath); return true; @@ -1280,7 +1271,7 @@ inline bool IsleApp::Tick() static MxS32 g_startupDelay = 1; if (!m_windowActive) { - SDL_Delay(1); + MORTAR_Delay(1); return true; } @@ -1300,7 +1291,7 @@ inline bool IsleApp::Tick() } if (m_frameDelta + g_lastFrameTime >= currentTime) { - SDL_Delay(1); + MORTAR_Delay(1); return true; } @@ -1327,7 +1318,7 @@ inline bool IsleApp::Tick() if (!stream) { stream = Streamer()->Open("\\lego\\scripts\\nocd", MxStreamer::e_diskStream); if (!stream) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to open NOCD.si: Streamer failed to load"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to open NOCD.si: Streamer failed to load"); return false; } @@ -1337,7 +1328,7 @@ inline bool IsleApp::Tick() VideoManager()->EnableFullScreenMovie(TRUE, TRUE); if (Start(&ds) != SUCCESS) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to open NOCD.si: Failed to start initial action"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to open NOCD.si: Failed to start initial action"); return false; } } @@ -1346,7 +1337,7 @@ inline bool IsleApp::Tick() ds.SetUnknown24(-1); ds.SetObjectId(0); if (Start(&ds) != SUCCESS) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to open ISLE.si: Failed to start initial action"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to open ISLE.si: Failed to start initial action"); return false; } } @@ -1389,16 +1380,16 @@ void IsleApp::SetupCursor(Cursor p_cursor) } else { if (m_cursorCurrent != NULL) { - SDL_SetCursor(m_cursorCurrent); - SDL_ShowCursor(); + MORTAR_SetCursor(m_cursorCurrent); + MORTAR_ShowCursor(); } else { - SDL_HideCursor(); + MORTAR_HideCursor(); } } } -SDL_AppResult IsleApp::ParseArguments(int argc, char** argv) +MORTAR_AppResult IsleApp::ParseArguments(int argc, char** argv) { for (int i = 1, consumed; i < argc; i += consumed) { consumed = -1; @@ -1407,26 +1398,30 @@ SDL_AppResult IsleApp::ParseArguments(int argc, char** argv) m_iniPath = argv[i + 1]; consumed = 2; } + else if (strcmp(argv[i], "--platform") == 0) { + // Handled by mortar + consumed = 2; + } else if (strcmp(argv[i], "--help") == 0) { DisplayArgumentHelp(argv[0]); - return SDL_APP_SUCCESS; + return MORTAR_APP_SUCCESS; } if (consumed <= 0) { - SDL_Log("Invalid argument(s): %s", argv[i]); + MORTAR_Log("Invalid argument(s): %s", argv[i]); DisplayArgumentHelp(argv[0]); - return SDL_APP_FAILURE; + return MORTAR_APP_FAILURE; } } - return SDL_APP_CONTINUE; + return MORTAR_APP_CONTINUE; } void IsleApp::DisplayArgumentHelp(const char* p_execName) { - SDL_Log("Usage: %s [options]", p_execName); - SDL_Log("Options:"); - SDL_Log(" --ini Set custom path to .ini config"); - SDL_Log(" --help Show this help message"); + MORTAR_Log("Usage: %s [options]", p_execName); + MORTAR_Log("Options:"); + MORTAR_Log(" --ini Set custom path to .ini config"); + MORTAR_Log(" --help Show this help message"); } MxResult IsleApp::VerifyFilesystem() @@ -1443,7 +1438,7 @@ MxResult IsleApp::VerifyFilesystem() path += file; path.MapPathToFilesystem(); - if (SDL_GetPathInfo(path.GetData(), NULL)) { + if (MORTAR_GetPathInfo(path.GetData(), NULL)) { found = true; break; } @@ -1451,16 +1446,16 @@ MxResult IsleApp::VerifyFilesystem() if (!found) { char buffer[1024]; - SDL_snprintf( + MORTAR_snprintf( buffer, sizeof(buffer), "\"LEGO® Island\" failed to start.\nPlease make sure the file %s is located in either diskpath or " - "cdpath.\nSDL error: %s", + "cdpath.\nMORTAR error: %s", file, - SDL_GetError() + MORTAR_GetError() ); - Any_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "LEGO® Island Error", buffer, NULL); + Any_ShowSimpleMessageBox(MORTAR_MESSAGEBOX_ERROR, "LEGO® Island Error", buffer, NULL); return FAILURE; } } @@ -1472,15 +1467,15 @@ MxResult IsleApp::VerifyFilesystem() void IsleApp::DetectGameVersion() { const char* file = "/lego/scripts/infocntr/infomain.si"; - SDL_PathInfo info; + MORTAR_PathInfo info; bool success = false; MxString path = MxString(m_hdPath) + file; path.MapPathToFilesystem(); - if (!(success = SDL_GetPathInfo(path.GetData(), &info))) { + if (!(success = MORTAR_GetPathInfo(path.GetData(), &info))) { path = MxString(m_cdPath) + file; path.MapPathToFilesystem(); - success = SDL_GetPathInfo(path.GetData(), &info); + success = MORTAR_GetPathInfo(path.GetData(), &info); } assert(success); @@ -1489,11 +1484,11 @@ void IsleApp::DetectGameVersion() Lego()->SetVersion10(info.size == 58130432 || info.size == 57737216); if (Lego()->IsVersion10()) { - SDL_Log("Detected game version 1.0"); - SDL_SetWindowTitle(reinterpret_cast(m_windowHandle), "Lego Island"); + MORTAR_Log("Detected game version 1.0"); + MORTAR_SetWindowTitle(reinterpret_cast(m_windowHandle), "Lego Island"); } else { - SDL_Log("Detected game version 1.1"); + MORTAR_Log("Detected game version 1.1"); } } @@ -1551,8 +1546,8 @@ void IsleApp::MoveVirtualMouseViaJoystick() if (moveX != 0 || moveY != 0) { g_mousemoved = TRUE; - g_lastMouseX = SDL_clamp(g_lastMouseX + moveX, 0, g_targetWidth); - g_lastMouseY = SDL_clamp(g_lastMouseY + moveY, 0, g_targetHeight); + g_lastMouseX = MORTAR_clamp(g_lastMouseX + moveX, 0, g_targetWidth); + g_lastMouseY = MORTAR_clamp(g_lastMouseY + moveY, 0, g_targetHeight); if (InputManager()) { InputManager()->QueueEvent( @@ -1564,7 +1559,7 @@ void IsleApp::MoveVirtualMouseViaJoystick() ); } - SDL_HideCursor(); + MORTAR_HideCursor(); g_isle->SetDrawCursor(TRUE); if (VideoManager()) { VideoManager()->SetCursorBitmap(m_cursorCurrentBitmap); @@ -1572,28 +1567,28 @@ void IsleApp::MoveVirtualMouseViaJoystick() } IDirect3DRMMiniwinDevice* device = GetD3DRMMiniwinDevice(); if (device) { - Sint32 x, y; + int x, y; device->ConvertRenderToWindowCoordinates(g_lastMouseX, g_lastMouseY, x, y); g_mouseWarped = TRUE; - SDL_WarpMouseInWindow(window, x, y); + MORTAR_WarpMouseInWindow(window, x, y); } } } -void IsleApp::DetectDoubleTap(const SDL_TouchFingerEvent& p_event) +void IsleApp::DetectDoubleTap(const MORTAR_TouchFingerEvent& p_event) { - typedef std::pair> LastTap; + typedef std::pair> LastTap; const MxU32 doubleTapMs = 500; const float doubleTapDist = 0.001; static LastTap lastTap = {0, {0, 0}}; LastTap currentTap = {p_event.timestamp, {p_event.x, p_event.y}}; - if (SDL_NS_TO_MS(currentTap.first - lastTap.first) < doubleTapMs && + if (MORTAR_NS_TO_MS(currentTap.first - lastTap.first) < doubleTapMs && DISTSQRD2(currentTap.second, lastTap.second) < doubleTapDist) { if (InputManager()) { - InputManager()->QueueEvent(c_notificationKeyPress, SDLK_SPACE, 0, 0, SDLK_SPACE); + InputManager()->QueueEvent(c_notificationKeyPress, MORTARK_SPACE, 0, 0, MORTARK_SPACE); } lastTap = {0, {0, 0}}; @@ -1602,3 +1597,21 @@ void IsleApp::DetectDoubleTap(const SDL_TouchFingerEvent& p_event) lastTap = currentTap; } } + +#ifdef _WIN32 +int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int nShowCmd) +{ + return MORTAR_main(0, NULL, MORTAR_AppInit, MORTAR_AppIterate, MORTAR_AppEvent, MORTAR_AppQuit); +} +#else +int main(int argc, char* argv[]) +{ + return MORTAR_main(argc, argv, MORTAR_AppInit, MORTAR_AppIterate, MORTAR_AppEvent, MORTAR_AppQuit); +} +#ifdef __ANDROID__ +int SDL_main(int argc, char* argv[]) +{ + return main(argc, argv); +} +#endif +#endif diff --git a/ISLE/isleapp.h b/ISLE/isleapp.h index 75c332aa..4e98d69a 100644 --- a/ISLE/isleapp.h +++ b/ISLE/isleapp.h @@ -9,7 +9,8 @@ #include "mxtypes.h" #include "mxvideoparam.h" -#include +#include +#include #ifdef MINIWIN #include "miniwin/windows.h" #else @@ -43,14 +44,14 @@ class IsleApp { bool Tick(); void SetupCursor(Cursor p_cursor); - static MxU8 MapMouseButtonFlagsToModifier(SDL_MouseButtonFlags p_flags); + static MxU8 MapMouseButtonFlagsToModifier(MORTAR_MouseButtonFlags p_flags); HWND GetWindowHandle() { return m_windowHandle; } MxLong GetFrameDelta() { return m_frameDelta; } MxS32 GetFullScreen() { return m_fullScreen; } - SDL_Cursor* GetCursorCurrent() { return m_cursorCurrent; } - SDL_Cursor* GetCursorBusy() { return m_cursorBusy; } - SDL_Cursor* GetCursorNo() { return m_cursorNo; } + MORTAR_Cursor* GetCursorCurrent() { return m_cursorCurrent; } + MORTAR_Cursor* GetCursorBusy() { return m_cursorBusy; } + MORTAR_Cursor* GetCursorNo() { return m_cursorNo; } MxS32 GetDrawCursor() { return m_drawCursor; } MxS32 GetGameStarted() { return m_gameStarted; } MxFloat GetCursorSensitivity() { return m_cursorSensitivity; } @@ -62,38 +63,38 @@ class IsleApp { void SetGameStarted(MxS32 p_gameStarted) { m_gameStarted = p_gameStarted; } void SetDrawCursor(MxS32 p_drawCursor) { m_drawCursor = p_drawCursor; } - SDL_AppResult ParseArguments(int argc, char** argv); + MORTAR_AppResult ParseArguments(int argc, char** argv); MxResult VerifyFilesystem(); void DetectGameVersion(); void MoveVirtualMouseViaJoystick(); - void DetectDoubleTap(const SDL_TouchFingerEvent& p_event); + void DetectDoubleTap(const MORTAR_TouchFingerEvent& p_event); private: - char* m_hdPath; // 0x00 - char* m_cdPath; // 0x04 - char* m_deviceId; // 0x08 - char* m_savePath; // 0x0c - MxBool m_fullScreen; // 0x10 - MxS32 m_flipSurfaces; // 0x14 - MxS32 m_backBuffersInVram; // 0x18 - MxS32 m_using8bit; // 0x1c - MxS32 m_using16bit; // 0x20 - MxS32 m_hasLightSupport; // 0x24 - MxS32 m_use3dSound; // 0x28 - MxS32 m_useMusic; // 0x2c - MxS32 m_wideViewAngle; // 0x38 - MxS32 m_islandQuality; // 0x3c - MxS32 m_islandTexture; // 0x40 - MxS32 m_gameStarted; // 0x44 - MxLong m_frameDelta; // 0x48 - MxVideoParam m_videoParam; // 0x4c - MxS32 m_windowActive; // 0x70 - HWND m_windowHandle; // 0x74 - MxS32 m_drawCursor; // 0x78 - SDL_Cursor* m_cursorArrow; // 0x7c - SDL_Cursor* m_cursorBusy; // 0x80 - SDL_Cursor* m_cursorNo; // 0x84 - SDL_Cursor* m_cursorCurrent; // 0x88 + char* m_hdPath; // 0x00 + char* m_cdPath; // 0x04 + char* m_deviceId; // 0x08 + char* m_savePath; // 0x0c + MxBool m_fullScreen; // 0x10 + MxS32 m_flipSurfaces; // 0x14 + MxS32 m_backBuffersInVram; // 0x18 + MxS32 m_using8bit; // 0x1c + MxS32 m_using16bit; // 0x20 + MxS32 m_hasLightSupport; // 0x24 + MxS32 m_use3dSound; // 0x28 + MxS32 m_useMusic; // 0x2c + MxS32 m_wideViewAngle; // 0x38 + MxS32 m_islandQuality; // 0x3c + MxS32 m_islandTexture; // 0x40 + MxS32 m_gameStarted; // 0x44 + MxLong m_frameDelta; // 0x48 + MxVideoParam m_videoParam; // 0x4c + MxS32 m_windowActive; // 0x70 + HWND m_windowHandle; // 0x74 + MxS32 m_drawCursor; // 0x78 + MORTAR_Cursor* m_cursorArrow; // 0x7c + MORTAR_Cursor* m_cursorBusy; // 0x80 + MORTAR_Cursor* m_cursorNo; // 0x84 + MORTAR_Cursor* m_cursorCurrent; // 0x88 const CursorBitmap* m_cursorArrowBitmap; const CursorBitmap* m_cursorBusyBitmap; const CursorBitmap* m_cursorNoBitmap; diff --git a/ISLE/switch/config.cpp b/ISLE/switch/config.cpp index 9f7f1b56..799c68b2 100644 --- a/ISLE/switch/config.cpp +++ b/ISLE/switch/config.cpp @@ -1,7 +1,7 @@ #include "config.h" -#include #include +#include void NX_SetupDefaultConfigOverrides(dictionary* p_dictionary) { diff --git a/ISLE/vita/config.cpp b/ISLE/vita/config.cpp index 40979ba2..336b6e1d 100644 --- a/ISLE/vita/config.cpp +++ b/ISLE/vita/config.cpp @@ -1,11 +1,11 @@ #include "config.h" -#include #include +#include void VITA_SetupDefaultConfigOverrides(dictionary* p_dictionary) { - SDL_Log("Overriding default config for VITA"); + MORTAR_Log("Overriding default config for VITA"); iniparser_set(p_dictionary, "isle:diskpath", "ux0:data/isledecomp/isle/disk"); iniparser_set(p_dictionary, "isle:cdpath", "ux0:data/isledecomp/isle/cd"); diff --git a/ISLE/vita/messagebox.cpp b/ISLE/vita/messagebox.cpp index 6b3a485e..199b376c 100644 --- a/ISLE/vita/messagebox.cpp +++ b/ISLE/vita/messagebox.cpp @@ -5,7 +5,12 @@ #include #include -bool Vita_ShowSimpleMessageBox(SDL_MessageBoxFlags flags, const char* title, const char* message, SDL_Window* window) +bool Vita_ShowSimpleMessageBox( + MORTAR_MessageBoxFlags flags, + const char* title, + const char* message, + MORTAR_Window* window +) { int ret; SceMsgDialogParam param; @@ -15,20 +20,20 @@ bool Vita_ShowSimpleMessageBox(SDL_MessageBoxFlags flags, const char* title, con SceCommonDialogErrorCode init_result; bool setup_minimal_gxm = false; - SDL_zero(param); + MORTAR_zero(param); sceMsgDialogParamInit(¶m); param.mode = SCE_MSG_DIALOG_MODE_USER_MSG; - SDL_zero(msgParam); + MORTAR_zero(msgParam); char message_data[0x1000]; - SDL_snprintf(message_data, sizeof(message_data), "%s\r\n\r\n%s", title, message); + MORTAR_snprintf(message_data, sizeof(message_data), "%s\r\n\r\n%s", title, message); msgParam.msg = (const SceChar8*) message_data; msgParam.buttonType = SCE_MSG_DIALOG_BUTTON_TYPE_OK; param.userMsgParam = &msgParam; if (!gxm) { - gxm = (GXMContext*) SDL_malloc(sizeof(GXMContext)); + gxm = (GXMContext*) MORTAR_malloc(sizeof(GXMContext)); } if (ret = gxm->init(SCE_GXM_MULTISAMPLE_NONE); ret < 0) { return false; @@ -40,7 +45,7 @@ bool Vita_ShowSimpleMessageBox(SDL_MessageBoxFlags flags, const char* title, con gxm->clear(0, 0, 0, true); gxm->swap_display(); } - SDL_zero(dialog_result); + MORTAR_zero(dialog_result); sceMsgDialogGetResult(&dialog_result); sceMsgDialogTerm(); return dialog_result.buttonId == SCE_MSG_DIALOG_BUTTON_ID_OK; diff --git a/ISLE/vita/messagebox.h b/ISLE/vita/messagebox.h index 7ad877ee..82a6d033 100644 --- a/ISLE/vita/messagebox.h +++ b/ISLE/vita/messagebox.h @@ -1,8 +1,13 @@ #ifndef VITA_MESSAGE_BOX_H #define VITA_MESSAGE_BOX_H -#include +#include -bool Vita_ShowSimpleMessageBox(SDL_MessageBoxFlags flags, const char* title, const char* message, SDL_Window* window); +bool Vita_ShowSimpleMessageBox( + MORTAR_MessageBoxFlags flags, + const char* title, + const char* message, + MORTAR_Window* window +); #endif // VITA_MESSAGE_BOX_H diff --git a/ISLE/xbox_one_series/config.cpp b/ISLE/xbox_one_series/config.cpp index 72ea32af..524f2855 100644 --- a/ISLE/xbox_one_series/config.cpp +++ b/ISLE/xbox_one_series/config.cpp @@ -1,11 +1,11 @@ #include "config.h" -#include #include +#include void XBONE_SetupDefaultConfigOverrides(dictionary* p_dictionary) { - SDL_Log("Overriding default config for Xbox One/Series"); + MORTAR_Log("Overriding default config for Xbox One/Series"); // Use DevelopmentFiles path for disk and cd paths // It's good to use that path since user can easily diff --git a/LEGO1/lego/legoomni/include/gasstation.h b/LEGO1/lego/legoomni/include/gasstation.h index f87aeb6e..61e5e0c7 100644 --- a/LEGO1/lego/legoomni/include/gasstation.h +++ b/LEGO1/lego/legoomni/include/gasstation.h @@ -7,7 +7,7 @@ #include "legoworld.h" #include "radio.h" -#include +#include class MxStillPresenter; @@ -114,7 +114,7 @@ class GasStation : public LegoWorld { inline void StopAction(GarageScript::Script p_objectId); MxLong HandleEndAction(MxEndActionNotificationParam& p_param); - MxLong HandleKeyPress(SDL_Keycode p_key); + MxLong HandleKeyPress(MORTAR_Keycode p_key); MxLong HandleButtonDown(LegoControlManagerNotificationParam& p_param); MxS16 m_currentActorId; // 0xf8 diff --git a/LEGO1/lego/legoomni/include/hospital.h b/LEGO1/lego/legoomni/include/hospital.h index d6401be9..56fe448f 100644 --- a/LEGO1/lego/legoomni/include/hospital.h +++ b/LEGO1/lego/legoomni/include/hospital.h @@ -106,7 +106,7 @@ class Hospital : public LegoWorld { // Hospital::`scalar deleting destructor' private: - MxLong HandleKeyPress(SDL_Keycode p_key); + MxLong HandleKeyPress(MORTAR_Keycode p_key); MxLong HandleEndAction(MxEndActionNotificationParam& p_param); MxLong HandleButtonDown(LegoControlManagerNotificationParam& p_param); MxBool HandleControl(LegoControlManagerNotificationParam& p_param); diff --git a/LEGO1/lego/legoomni/include/infocenter.h b/LEGO1/lego/legoomni/include/infocenter.h index ca1525c5..92b25df9 100644 --- a/LEGO1/lego/legoomni/include/infocenter.h +++ b/LEGO1/lego/legoomni/include/infocenter.h @@ -151,7 +151,7 @@ class Infocenter : public LegoWorld { private: void InitializeBitmaps(); - MxLong HandleKeyPress(SDL_Keycode p_key); + MxLong HandleKeyPress(MORTAR_Keycode p_key); MxU8 HandleMouseMove(MxS32 p_x, MxS32 p_y); MxU8 HandleButtonUp(MxS32 p_x, MxS32 p_y); MxU8 HandleControl(LegoControlManagerNotificationParam& p_param); diff --git a/LEGO1/lego/legoomni/include/legocachesoundmanager.h b/LEGO1/lego/legoomni/include/legocachesoundmanager.h index 642ef087..cfd4b3bd 100644 --- a/LEGO1/lego/legoomni/include/legocachesoundmanager.h +++ b/LEGO1/lego/legoomni/include/legocachesoundmanager.h @@ -6,7 +6,7 @@ #include "mxstl/stlcompat.h" #include "mxtypes.h" -#include +#include #pragma warning(disable : 4237) @@ -40,7 +40,7 @@ struct LegoCacheSoundEntry { struct Set100d6b4cComparator { bool operator()(const LegoCacheSoundEntry& p_a, const LegoCacheSoundEntry& p_b) const { - return SDL_strcasecmp(p_a.m_name, p_b.m_name) > 0; + return MORTAR_strcasecmp(p_a.m_name, p_b.m_name) > 0; } }; diff --git a/LEGO1/lego/legoomni/include/legocarbuild.h b/LEGO1/lego/legoomni/include/legocarbuild.h index b3421988..194cbf93 100644 --- a/LEGO1/lego/legoomni/include/legocarbuild.h +++ b/LEGO1/lego/legoomni/include/legocarbuild.h @@ -6,7 +6,7 @@ #include "legoworld.h" #include "mxgeometry/mxquaternion.h" -#include +#include class LegoCarBuildAnimPresenter; class LegoControlManagerNotificationParam; @@ -201,7 +201,7 @@ class LegoCarBuild : public LegoWorld { MxU8 m_missclickCounter; // 0x109 MxU16 m_lastActorScript; // 0x10a - Uint64 m_lastActorScriptStartTime; // 0x10c + uint64_t m_lastActorScriptStartTime; // 0x10c LegoROI* m_selectedPart; // 0x110 BoundingSphere m_targetBoundingSphere; // 0x114 MxMatrix m_originalSelectedPartTransform; // 0x12c diff --git a/LEGO1/lego/legoomni/include/legocharactermanager.h b/LEGO1/lego/legoomni/include/legocharactermanager.h index 4443ca8a..2a666421 100644 --- a/LEGO1/lego/legoomni/include/legocharactermanager.h +++ b/LEGO1/lego/legoomni/include/legocharactermanager.h @@ -7,7 +7,7 @@ #include "mxvariable.h" #include "roi/legoroi.h" -#include +#include class LegoActor; class LegoExtraActor; @@ -17,7 +17,7 @@ class LegoROI; #pragma warning(disable : 4237) struct LegoCharacterComparator { - MxBool operator()(const char* const& p_a, const char* const& p_b) const { return SDL_strcasecmp(p_a, p_b) < 0; } + MxBool operator()(const char* const& p_a, const char* const& p_b) const { return MORTAR_strcasecmp(p_a, p_b) < 0; } }; // SIZE 0x08 diff --git a/LEGO1/lego/legoomni/include/legoeventnotificationparam.h b/LEGO1/lego/legoomni/include/legoeventnotificationparam.h index 5569280c..cb09c4cd 100644 --- a/LEGO1/lego/legoomni/include/legoeventnotificationparam.h +++ b/LEGO1/lego/legoomni/include/legoeventnotificationparam.h @@ -4,7 +4,7 @@ #include "mxnotificationparam.h" #include "mxtypes.h" -#include +#include #include class LegoROI; @@ -37,7 +37,7 @@ class LegoEventNotificationParam : public MxNotificationParam { MxU8 p_modifier, MxS32 p_x, MxS32 p_y, - SDL_Keycode p_key + MORTAR_Keycode p_key ) : MxNotificationParam(p_type, p_sender), m_modifier(p_modifier), m_x(p_x), m_y(p_y), m_key(p_key), m_roi(NULL) { @@ -45,7 +45,7 @@ class LegoEventNotificationParam : public MxNotificationParam { LegoROI* GetROI() { return m_roi; } MxU8 GetModifier() { return m_modifier; } - SDL_Keycode GetKey() const { return m_key; } + MORTAR_Keycode GetKey() const { return m_key; } // FUNCTION: LEGO1 0x10012190 // FUNCTION: BETA10 0x10024210 @@ -61,7 +61,7 @@ class LegoEventNotificationParam : public MxNotificationParam { void SetModifier(MxU8 p_modifier) { m_modifier = p_modifier; } // FUNCTION: BETA10 0x1007d6b0 - void SetKey(SDL_Keycode p_key) { m_key = p_key; } + void SetKey(MORTAR_Keycode p_key) { m_key = p_key; } // FUNCTION: BETA10 0x1007d650 void SetX(MxS32 p_x) { m_x = p_x; } @@ -70,11 +70,11 @@ class LegoEventNotificationParam : public MxNotificationParam { void SetY(MxS32 p_y) { m_y = p_y; } protected: - MxU8 m_modifier; // 0x0c - MxS32 m_x; // 0x10 - MxS32 m_y; // 0x14 - SDL_Keycode m_key; // 0x18 - LegoROI* m_roi; // 0x1c + MxU8 m_modifier; // 0x0c + MxS32 m_x; // 0x10 + MxS32 m_y; // 0x14 + MORTAR_Keycode m_key; // 0x18 + LegoROI* m_roi; // 0x1c }; // SYNTHETIC: LEGO1 0x10028770 diff --git a/LEGO1/lego/legoomni/include/legoinputmanager.h b/LEGO1/lego/legoomni/include/legoinputmanager.h index 6ddadec1..81d84dc3 100644 --- a/LEGO1/lego/legoomni/include/legoinputmanager.h +++ b/LEGO1/lego/legoomni/include/legoinputmanager.h @@ -8,11 +8,7 @@ #include "mxpresenter.h" #include "mxqueue.h" -#include -#include -#include -#include -#include +#include #ifdef MINIWIN #include "miniwin/windows.h" #else @@ -103,7 +99,7 @@ class LegoInputManager : public MxPresenter { LegoInputManager(); ~LegoInputManager() override; - LEGO1_EXPORT void QueueEvent(NotificationId p_id, MxU8 p_modifier, MxLong p_x, MxLong p_y, SDL_Keycode p_key); + LEGO1_EXPORT void QueueEvent(NotificationId p_id, MxU8 p_modifier, MxLong p_x, MxLong p_y, MORTAR_Keycode p_key); void Register(MxCore*); void UnRegister(MxCore*); @@ -156,23 +152,23 @@ class LegoInputManager : public MxPresenter { void GetKeyboardState(); MxResult GetNavigationKeyStates(MxU32& p_keyFlags); MxResult GetNavigationTouchStates(MxU32& p_keyFlags); - LEGO1_EXPORT void AddKeyboard(SDL_KeyboardID p_keyboardID); - LEGO1_EXPORT void RemoveKeyboard(SDL_KeyboardID p_keyboardID); - LEGO1_EXPORT void AddMouse(SDL_MouseID p_mouseID); - LEGO1_EXPORT void RemoveMouse(SDL_MouseID p_mouseID); - LEGO1_EXPORT void AddJoystick(SDL_JoystickID p_joystickID); - LEGO1_EXPORT void RemoveJoystick(SDL_JoystickID p_joystickID); - LEGO1_EXPORT MxBool HandleTouchEvent(SDL_Event* p_event, TouchScheme p_touchScheme); + LEGO1_EXPORT void AddKeyboard(MORTAR_KeyboardID p_keyboardID); + LEGO1_EXPORT void RemoveKeyboard(MORTAR_KeyboardID p_keyboardID); + LEGO1_EXPORT void AddMouse(MORTAR_MouseID p_mouseID); + LEGO1_EXPORT void RemoveMouse(MORTAR_MouseID p_mouseID); + LEGO1_EXPORT void AddJoystick(MORTAR_JoystickID p_joystickID); + LEGO1_EXPORT void RemoveJoystick(MORTAR_JoystickID p_joystickID); + LEGO1_EXPORT MxBool HandleTouchEvent(MORTAR_Event* p_event, TouchScheme p_touchScheme); LEGO1_EXPORT MxBool HandleRumbleEvent(float p_strength, float p_lowFrequencyRumble, float p_highFrequencyRumble, MxU32 p_milliseconds); - LEGO1_EXPORT void UpdateLastInputMethod(SDL_Event* p_event); + LEGO1_EXPORT void UpdateLastInputMethod(MORTAR_Event* p_event); const auto& GetLastInputMethod() { return m_lastInputMethod; } // clang-format off - enum class SDL_KeyboardID_v : SDL_KeyboardID {}; - enum class SDL_MouseID_v : SDL_MouseID {}; - enum class SDL_JoystickID_v : SDL_JoystickID {}; - enum class SDL_TouchID_v : SDL_TouchID {}; + enum class MORTAR_KeyboardID_v : MORTAR_KeyboardID {}; + enum class MORTAR_MouseID_v : MORTAR_MouseID {}; + enum class MORTAR_JoystickID_v : MORTAR_JoystickID {}; + enum class MORTAR_TouchID_v : MORTAR_TouchID {}; // clang-format on // SYNTHETIC: LEGO1 0x1005b8d0 @@ -189,7 +185,7 @@ class LegoInputManager : public MxPresenter { MxS32 m_x; // 0x6c MxS32 m_y; // 0x70 MxS32 m_unk0x74; // 0x74 - SDL_TimerID m_autoDragTimerID; // 0x78 + MORTAR_TimerID m_autoDragTimerID; // 0x78 UINT m_autoDragTime; // 0x7c MxBool m_unk0x80; // 0x80 MxBool m_unk0x81; // 0x81 @@ -202,14 +198,14 @@ class LegoInputManager : public MxPresenter { MxBool m_wasd; TouchScheme m_touchScheme = e_none; - SDL_Point m_touchVirtualThumb = {0, 0}; - SDL_FPoint m_touchVirtualThumbOrigin; - std::map m_touchFlags; - std::map> m_keyboards; - std::map> m_mice; - std::map> m_joysticks; - std::map m_otherHaptics; - std::variant m_lastInputMethod; + MORTAR_Point m_touchVirtualThumb = {0, 0}; + MORTAR_FPoint m_touchVirtualThumbOrigin; + std::map m_touchFlags; + std::map> m_keyboards; + std::map> m_mice; + std::map> m_joysticks; + std::map m_otherHaptics; + std::variant m_lastInputMethod; }; // TEMPLATE: LEGO1 0x10028850 diff --git a/LEGO1/lego/legoomni/include/legomain.h b/LEGO1/lego/legoomni/include/legomain.h index 8fdf9ecb..33fe65d7 100644 --- a/LEGO1/lego/legoomni/include/legomain.h +++ b/LEGO1/lego/legoomni/include/legomain.h @@ -7,8 +7,8 @@ #include "mxdsaction.h" #include "mxmain.h" -#include -#include +#include +#include class Isle; class LegoAnimationManager; @@ -196,14 +196,13 @@ class LegoOmni : public MxOmni { void CloseMainWindow() { - SDL_QuitEvent quit; - quit.type = SDL_EVENT_QUIT; - quit.timestamp = SDL_GetTicksNS(); + MORTAR_Event event; + MORTAR_zero(event); - SDL_Event event; - event.quit = quit; + event.quit.type = MORTAR_EVENT_QUIT; + event.quit.timestamp = MORTAR_GetTicksNS(); - SDL_PushEvent(&event); + MORTAR_PushEvent(&event); } void SetVersion10(MxBool p_version10) { m_version10 = p_version10; } diff --git a/LEGO1/lego/legoomni/include/legoworldpresenter.h b/LEGO1/lego/legoomni/include/legoworldpresenter.h index 88848873..9157675e 100644 --- a/LEGO1/lego/legoomni/include/legoworldpresenter.h +++ b/LEGO1/lego/legoomni/include/legoworldpresenter.h @@ -4,7 +4,7 @@ #include "lego1_export.h" #include "legoentitypresenter.h" -#include +#include class LegoWorld; struct ModelDbPart; @@ -51,8 +51,8 @@ class LegoWorldPresenter : public LegoEntityPresenter { // LegoWorldPresenter::`scalar deleting destructor' private: - MxResult LoadWorldPart(ModelDbPart& p_part, SDL_IOStream* p_wdbFile); - MxResult LoadWorldModel(ModelDbModel& p_model, SDL_IOStream* p_wdbFile, LegoWorld* p_world); + MxResult LoadWorldPart(ModelDbPart& p_part, MORTAR_IOStream* p_wdbFile); + MxResult LoadWorldModel(ModelDbModel& p_model, MORTAR_IOStream* p_wdbFile, LegoWorld* p_world); MxU32 m_nextObjectId; }; diff --git a/LEGO1/lego/legoomni/include/mxtransitionmanager.h b/LEGO1/lego/legoomni/include/mxtransitionmanager.h index dd9dc9ed..e4f27895 100644 --- a/LEGO1/lego/legoomni/include/mxtransitionmanager.h +++ b/LEGO1/lego/legoomni/include/mxtransitionmanager.h @@ -5,7 +5,7 @@ #include "lego1_export.h" #include "mxcore.h" -#include +#include #ifdef MINIWIN #include "miniwin/ddraw.h" #else @@ -86,7 +86,7 @@ class MxTransitionManager : public MxCore { MxU16 m_animationTimer; // 0x34 MxU16 m_columnOrder[640]; // 0x36 MxU16 m_randomShift[480]; // 0x536 - Uint64 m_systemTime; // 0x8f8 + uint64_t m_systemTime; // 0x8f8 MxS32 m_animationSpeed; // 0x8fc }; diff --git a/LEGO1/lego/legoomni/include/registrationbook.h b/LEGO1/lego/legoomni/include/registrationbook.h index c8c0c703..9d6fca62 100644 --- a/LEGO1/lego/legoomni/include/registrationbook.h +++ b/LEGO1/lego/legoomni/include/registrationbook.h @@ -69,7 +69,7 @@ class RegistrationBook : public LegoWorld { MxU32 m_intAlphabetOffset; MxLong HandleEndAction(MxEndActionNotificationParam& p_param); - MxLong HandleKeyPress(SDL_Keycode p_key); + MxLong HandleKeyPress(MORTAR_Keycode p_key); MxLong HandleControl(LegoControlManagerNotificationParam& p_param); MxLong HandlePathStruct(LegoPathStructNotificationParam& p_param); void LoadSave(MxS16 p_checkMarkIndex); diff --git a/LEGO1/lego/legoomni/src/actors/act2actor.cpp b/LEGO1/lego/legoomni/src/actors/act2actor.cpp index 9c38f7a8..4ed44fad 100644 --- a/LEGO1/lego/legoomni/src/actors/act2actor.cpp +++ b/LEGO1/lego/legoomni/src/actors/act2actor.cpp @@ -455,7 +455,7 @@ MxS32 Act2Actor::NextTargetLocation() assert(!m_grec); CurrentWorld(); - MxU16 randomVal = 1 + SDL_rand(2); + MxU16 randomVal = 1 + MORTAR_rand(2); if (m_visitedLocations == 8 && m_targetLocation != 8) { newLocation = 8; diff --git a/LEGO1/lego/legoomni/src/actors/act3actors.cpp b/LEGO1/lego/legoomni/src/actors/act3actors.cpp index 0b04b09a..480badec 100644 --- a/LEGO1/lego/legoomni/src/actors/act3actors.cpp +++ b/LEGO1/lego/legoomni/src/actors/act3actors.cpp @@ -413,7 +413,7 @@ MxResult Act3Cop::FUN_10040360() } if (grec == NULL) { - MxS32 random = SDL_rand(sizeOfArray(g_copDest)); + MxS32 random = MORTAR_rand(sizeOfArray(g_copDest)); Vector3 localf8(g_copDest[random].m_unk0x08); Vector3 local108(g_copDest[random].m_unk0x14); diff --git a/LEGO1/lego/legoomni/src/actors/ambulance.cpp b/LEGO1/lego/legoomni/src/actors/ambulance.cpp index 0d2b89cc..1e8f826f 100644 --- a/LEGO1/lego/legoomni/src/actors/ambulance.cpp +++ b/LEGO1/lego/legoomni/src/actors/ambulance.cpp @@ -23,7 +23,7 @@ #include "mxvariabletable.h" #include "scripts.h" -#include +#include #include DECOMP_SIZE_ASSERT(Ambulance, 0x184) @@ -247,14 +247,14 @@ MxLong Ambulance::HandleButtonDown(LegoControlManagerNotificationParam& p_param) if (m_taskState == Ambulance::e_waiting) { LegoROI* roi = PickROI(p_param.GetX(), p_param.GetY()); - if (roi != NULL && !SDL_strcasecmp(roi->GetName(), "ps-gate")) { + if (roi != NULL && !MORTAR_strcasecmp(roi->GetName(), "ps-gate")) { m_taskState = Ambulance::e_finished; return 1; } roi = PickRootROI(p_param.GetX(), p_param.GetY()); - if (roi != NULL && !SDL_strcasecmp(roi->GetName(), "gd")) { + if (roi != NULL && !MORTAR_strcasecmp(roi->GetName(), "gd")) { m_taskState = Ambulance::e_finished; return 1; } @@ -477,7 +477,7 @@ void Ambulance::ActivateSceneActions() else if (m_atPoliceTask != 0 && m_atBeachTask != 0) { IsleScript::Script objectId; - switch (SDL_rand(2)) { + switch (MORTAR_rand(2)) { case 0: objectId = IsleScript::c_ham076cl_PlayWav; break; @@ -495,7 +495,7 @@ void Ambulance::ActivateSceneActions() else { IsleScript::Script objectId; - switch (SDL_rand(2)) { + switch (MORTAR_rand(2)) { case 0: objectId = IsleScript::c_ham075cl_PlayWav; break; @@ -522,7 +522,7 @@ MxResult Ambulance::Tickle() else if (m_lastAction == IsleScript::c_noneIsle) { IsleScript::Script objectId; - switch (1 + SDL_rand(12)) { + switch (1 + MORTAR_rand(12)) { case 1: objectId = IsleScript::c_ham034ra_PlayWav; break; diff --git a/LEGO1/lego/legoomni/src/actors/doors.cpp b/LEGO1/lego/legoomni/src/actors/doors.cpp index 0a935334..8a6e4d85 100644 --- a/LEGO1/lego/legoomni/src/actors/doors.cpp +++ b/LEGO1/lego/legoomni/src/actors/doors.cpp @@ -6,8 +6,8 @@ #include "roi/legoroi.h" #include "tgl/tglvector.h" -#include #include +#include DECOMP_SIZE_ASSERT(Doors, 0x1f8) @@ -132,10 +132,11 @@ void Doors::ParseAction(char* p_extra) for (CompoundObject::const_iterator it = comp->begin(); it != comp->end(); it++) { LegoROI* roi = (LegoROI*) *it; - if (roi && (!SDL_strncasecmp(roi->GetName(), "dor-lt", 6) || !SDL_strncasecmp(roi->GetName(), "dor-sl", 6))) { + if (roi && + (!MORTAR_strncasecmp(roi->GetName(), "dor-lt", 6) || !MORTAR_strncasecmp(roi->GetName(), "dor-sl", 6))) { m_ltDoor = roi; } - else if (roi && (!SDL_strncasecmp(roi->GetName(), "dor-rt", 6) || !SDL_strncasecmp(roi->GetName(), "dor-sr", 6))) { + else if (roi && (!MORTAR_strncasecmp(roi->GetName(), "dor-rt", 6) || !MORTAR_strncasecmp(roi->GetName(), "dor-sr", 6))) { m_rtDoor = roi; } } diff --git a/LEGO1/lego/legoomni/src/actors/dunebuggy.cpp b/LEGO1/lego/legoomni/src/actors/dunebuggy.cpp index 03c97f7b..7afe6c0f 100644 --- a/LEGO1/lego/legoomni/src/actors/dunebuggy.cpp +++ b/LEGO1/lego/legoomni/src/actors/dunebuggy.cpp @@ -18,7 +18,7 @@ #include "mxtransitionmanager.h" #include "mxvariabletable.h" -#include +#include #include DECOMP_SIZE_ASSERT(DuneBuggy, 0x16c) @@ -167,22 +167,22 @@ MxS32 DuneBuggy::GetColorOffset(const char* p_variable) const char* color = VariableTable()->GetVariable(p_variable); assert(color); - if (!SDL_strcasecmp(color, "lego green")) { + if (!MORTAR_strcasecmp(color, "lego green")) { offset = 1; } - else if (!SDL_strcasecmp(color, "lego red")) { + else if (!MORTAR_strcasecmp(color, "lego red")) { offset = 2; } - else if (!SDL_strcasecmp(color, "lego yellow")) { + else if (!MORTAR_strcasecmp(color, "lego yellow")) { offset = 3; } - else if (!SDL_strcasecmp(color, "lego black")) { + else if (!MORTAR_strcasecmp(color, "lego black")) { offset = 4; } - else if (!SDL_strcasecmp(color, "lego blue")) { + else if (!MORTAR_strcasecmp(color, "lego blue")) { offset = 5; } - else if (!SDL_strcasecmp(color, "lego white")) { + else if (!MORTAR_strcasecmp(color, "lego white")) { offset = 6; } diff --git a/LEGO1/lego/legoomni/src/actors/radio.cpp b/LEGO1/lego/legoomni/src/actors/radio.cpp index 104ba823..99ea930c 100644 --- a/LEGO1/lego/legoomni/src/actors/radio.cpp +++ b/LEGO1/lego/legoomni/src/actors/radio.cpp @@ -215,16 +215,16 @@ RadioState::RadioState() { srand(Timer()->GetTime()); - m_activePlaylist = SDL_rand(3); + m_activePlaylist = MORTAR_rand(3); m_playlists[0] = Playlist((MxU32*) g_jingles, sizeOfArray(g_jingles), Playlist::e_loop); - m_playlists[0].m_nextIndex = SDL_rand(sizeOfArray(g_jingles)); + m_playlists[0].m_nextIndex = MORTAR_rand(sizeOfArray(g_jingles)); m_playlists[1] = Playlist((MxU32*) g_news, sizeOfArray(g_news), Playlist::e_loop); - m_playlists[1].m_nextIndex = SDL_rand(sizeOfArray(g_news)); + m_playlists[1].m_nextIndex = MORTAR_rand(sizeOfArray(g_news)); m_playlists[2] = Playlist((MxU32*) g_songs, sizeOfArray(g_songs), Playlist::e_loop); - m_playlists[2].m_nextIndex = SDL_rand(sizeOfArray(g_songs)); + m_playlists[2].m_nextIndex = MORTAR_rand(sizeOfArray(g_songs)); m_active = FALSE; } diff --git a/LEGO1/lego/legoomni/src/actors/towtrack.cpp b/LEGO1/lego/legoomni/src/actors/towtrack.cpp index e1cf0104..65fdcda5 100644 --- a/LEGO1/lego/legoomni/src/actors/towtrack.cpp +++ b/LEGO1/lego/legoomni/src/actors/towtrack.cpp @@ -175,7 +175,7 @@ MxLong TowTrack::HandleEndAction(MxEndActionNotificationParam& p_param) m_actorId = LegoActor::c_laura; } - switch (1 + SDL_rand(m_actorId != 4 ? 4 : 3)) { + switch (1 + MORTAR_rand(m_actorId != 4 ? 4 : 3)) { case 1: PlayFinalAnimation(IsleScript::c_wrt074sl_RunAnim); break; @@ -354,7 +354,7 @@ MxLong TowTrack::HandlePathStruct(LegoPathStructNotificationParam& p_param) objectId = IsleScript::c_wns034na_PlayWav; break; case c_mama: - switch (1 + SDL_rand(2)) { + switch (1 + MORTAR_rand(2)) { case 1: objectId = IsleScript::c_wns037na_PlayWav; break; @@ -364,7 +364,7 @@ MxLong TowTrack::HandlePathStruct(LegoPathStructNotificationParam& p_param) } break; case c_papa: - switch (1 + SDL_rand(2)) { + switch (1 + MORTAR_rand(2)) { case 1: objectId = IsleScript::c_wns041na_PlayWav; break; @@ -374,7 +374,7 @@ MxLong TowTrack::HandlePathStruct(LegoPathStructNotificationParam& p_param) } break; case c_nick: - switch (1 + SDL_rand(2)) { + switch (1 + MORTAR_rand(2)) { case 1: objectId = IsleScript::c_wns039na_PlayWav; break; @@ -384,7 +384,7 @@ MxLong TowTrack::HandlePathStruct(LegoPathStructNotificationParam& p_param) } break; case c_laura: - switch (1 + SDL_rand(2)) { + switch (1 + MORTAR_rand(2)) { case 1: objectId = IsleScript::c_wns043na_PlayWav; break; diff --git a/LEGO1/lego/legoomni/src/audio/legocachsound.cpp b/LEGO1/lego/legoomni/src/audio/legocachsound.cpp index f80ad4eb..35a1763b 100644 --- a/LEGO1/lego/legoomni/src/audio/legocachsound.cpp +++ b/LEGO1/lego/legoomni/src/audio/legocachsound.cpp @@ -26,8 +26,8 @@ LegoCacheSound::~LegoCacheSound() // FUNCTION: BETA10 0x10066498 void LegoCacheSound::Init() { - SDL_zero(m_buffer); - SDL_zero(m_cacheSound); + MORTAR_zero(m_buffer); + MORTAR_zero(m_cacheSound); m_data = NULL; m_unk0x58 = FALSE; memset(&m_wfx, 0, sizeof(m_wfx)); diff --git a/LEGO1/lego/legoomni/src/build/legocarbuild.cpp b/LEGO1/lego/legoomni/src/build/legocarbuild.cpp index 92d39bb4..388ecedf 100644 --- a/LEGO1/lego/legoomni/src/build/legocarbuild.cpp +++ b/LEGO1/lego/legoomni/src/build/legocarbuild.cpp @@ -30,9 +30,9 @@ #include "racecar_actions.h" #include "scripts.h" -#include -#include #include +#include +#include #include #include @@ -559,7 +559,7 @@ MxResult LegoCarBuild::Tickle() } if (m_lastActorScript) { - MxULong time = SDL_GetTicks(); + MxULong time = MORTAR_GetTicks(); MxULong dTime = (time - m_lastActorScriptStartTime) / 100; if (m_carId == RaceCar_Actor) { @@ -1324,30 +1324,30 @@ void LegoCarBuild::ToggleColorControlsEnabled() void LegoCarBuild::EnableDecalForSelectedPart(MxBool p_enabled) { if (m_animPresenter->StringDoesNotEndOnZero(m_selectedPart->GetName()) && m_Decals_Ctl) { - if (SDL_strncasecmp(m_selectedPart->GetName(), "JSFRNT", strlen("JSFRNT")) == 0) { + if (MORTAR_strncasecmp(m_selectedPart->GetName(), "JSFRNT", strlen("JSFRNT")) == 0) { m_Decal_Bitmap->Enable(p_enabled); m_Decals_Ctl->Enable(p_enabled); m_Decals_Ctl1->Enable(p_enabled); m_Decals_Ctl2->Enable(p_enabled); m_Decals_Ctl3->Enable(p_enabled); } - else if (SDL_strncasecmp(m_selectedPart->GetName(), "JSWNSH", strlen("JSWNSH")) == 0) { + else if (MORTAR_strncasecmp(m_selectedPart->GetName(), "JSWNSH", strlen("JSWNSH")) == 0) { m_Decal_Bitmap->Enable(p_enabled); m_Decals_Ctl4->Enable(p_enabled); m_Decals_Ctl5->Enable(p_enabled); m_Decals_Ctl6->Enable(p_enabled); m_Decals_Ctl7->Enable(p_enabled); } - else if (SDL_strncasecmp(m_selectedPart->GetName(), "RCBACK", strlen("RCBACK")) == 0) { + else if (MORTAR_strncasecmp(m_selectedPart->GetName(), "RCBACK", strlen("RCBACK")) == 0) { m_Decals_Ctl1->Enable(p_enabled); } - else if (SDL_strncasecmp(m_selectedPart->GetName(), "RCTAIL", strlen("RCTAIL")) == 0) { + else if (MORTAR_strncasecmp(m_selectedPart->GetName(), "RCTAIL", strlen("RCTAIL")) == 0) { m_Decals_Ctl2->Enable(p_enabled); } - else if (m_Decals_Ctl1 && SDL_strncasecmp(m_selectedPart->GetName(), "chljety", strlen("chljety")) == 0) { + else if (m_Decals_Ctl1 && MORTAR_strncasecmp(m_selectedPart->GetName(), "chljety", strlen("chljety")) == 0) { m_Decals_Ctl1->Enable(p_enabled); } - else if (m_Decals_Ctl2 && SDL_strncasecmp(m_selectedPart->GetName(), "chrjety", strlen("chrjety")) == 0) { + else if (m_Decals_Ctl2 && MORTAR_strncasecmp(m_selectedPart->GetName(), "chrjety", strlen("chrjety")) == 0) { m_Decals_Ctl2->Enable(p_enabled); } else if (m_Decals_Ctl) { @@ -1511,7 +1511,7 @@ void LegoCarBuild::StartActorScriptByType(MxS32 p_actionType) case LookupTableActionType::e_introduction1: case LookupTableActionType::e_introduction2: case LookupTableActionType::e_introduction3: - switch (SDL_rand(3)) { + switch (MORTAR_rand(3)) { case 0: m_lastActorScript = CopterScript::c_ips004d2_RunAnim; StopPlayingActorScript(); @@ -1610,7 +1610,7 @@ void LegoCarBuild::StartActorScriptByType(MxS32 p_actionType) #endif if (m_lastActorScript != 0) { - m_lastActorScriptStartTime = SDL_GetTicks(); + m_lastActorScriptStartTime = MORTAR_GetTicks(); } } diff --git a/LEGO1/lego/legoomni/src/build/legocarbuildpresenter.cpp b/LEGO1/lego/legoomni/src/build/legocarbuildpresenter.cpp index f5c92492..5634cbbf 100644 --- a/LEGO1/lego/legoomni/src/build/legocarbuildpresenter.cpp +++ b/LEGO1/lego/legoomni/src/build/legocarbuildpresenter.cpp @@ -16,7 +16,7 @@ #include "mxtimer.h" #include "realtime/realtime.h" -#include +#include DECOMP_SIZE_ASSERT(LegoCarBuildAnimPresenter::CarBuildPart, 0x0c) DECOMP_SIZE_ASSERT(LegoCarBuildAnimPresenter, 0x150) @@ -97,7 +97,7 @@ inline void LegoCarBuildAnimPresenter::UpdateFlashingPartVisibility() if (roi) { const LegoChar* name = roi->GetName(); - if (name && SDL_strcasecmp(wiredName, name) == 0) { + if (name && MORTAR_strcasecmp(wiredName, name) == 0) { if (showFlashingPart) { roi->SetVisibility(TRUE); } @@ -221,7 +221,7 @@ void LegoCarBuildAnimPresenter::StreamingTickle() for (MxS32 j = 0; j <= m_roiMapSize; j++) { LegoROI* roi = m_roiMap[j]; - if (roi && roi->GetName() && (SDL_strcasecmp(name, roi->GetName()) == 0)) { + if (roi && roi->GetName() && (MORTAR_strcasecmp(name, roi->GetName()) == 0)) { roi->ClearMeshOffset(); roi->SetLodColor("lego red"); } @@ -243,7 +243,7 @@ void LegoCarBuildAnimPresenter::StreamingTickle() for (i = 0; i < totalNodes; i++) { LegoAnimNodeData* animNodeData = (LegoAnimNodeData*) GetTreeNode(m_anim->GetRoot(), i)->GetData(); - if (SDL_strncasecmp(animNodeData->GetName(), "CAM", strlen("CAM")) == 0) { + if (MORTAR_strncasecmp(animNodeData->GetName(), "CAM", strlen("CAM")) == 0) { camera = local60->FindChildROI(animNodeData->GetName(), local60); fov = atof(&animNodeData->GetName()[strlen(animNodeData->GetName()) - 2]); break; @@ -330,7 +330,7 @@ void LegoCarBuildAnimPresenter::SwapNodesByName(LegoChar* p_name1, LegoChar* p_n { char buffer[40]; - if (SDL_strcasecmp(p_name1, p_name2) != 0) { + if (MORTAR_strcasecmp(p_name1, p_name2) != 0) { LegoAnimNodeData* node1 = FindNodeDataByName(m_anim->GetRoot(), p_name1); LegoAnimNodeData* node2 = FindNodeDataByName(m_anim->GetRoot(), p_name2); @@ -391,7 +391,7 @@ void LegoCarBuildAnimPresenter::InitBuildPlatform() for (i = 0; i < totalNodes; i++) { name = ((LegoAnimNodeData*) GetTreeNode(m_anim->GetRoot(), i)->GetData())->GetName(); - SDL_strupr(name); + MORTAR_strupr(name); if (StringEndsOnW(name)) { m_parts[name[strlen(name) - 1] - 'A'].m_wiredName = new LegoChar[strlen(name) + 1]; @@ -411,7 +411,7 @@ void LegoCarBuildAnimPresenter::InitBuildPlatform() name = ((LegoAnimNodeData*) GetTreeNode(m_anim->GetRoot(), i)->GetData())->GetName(); if (StringEndsOnYOrN(name)) { for (MxS16 ii = 0; ii < m_numberOfParts; ii++) { - if (SDL_strncasecmp(m_parts[ii].m_wiredName, name, strlen(name) - 2) == 0) { + if (MORTAR_strncasecmp(m_parts[ii].m_wiredName, name, strlen(name) - 2) == 0) { m_parts[ii].m_name = new LegoChar[strlen(name) + 1]; assert(m_parts[ii].m_name); strcpy(m_parts[ii].m_name, name); @@ -492,7 +492,7 @@ LegoAnimNodeData* LegoCarBuildAnimPresenter::FindNodeDataByName(LegoTreeNode* p_ if (p_treeNode) { data = (LegoAnimNodeData*) p_treeNode->GetData(); - if (SDL_strcasecmp(data->GetName(), p_name) == 0) { + if (MORTAR_strcasecmp(data->GetName(), p_name) == 0) { return data; } @@ -518,7 +518,7 @@ LegoTreeNode* LegoCarBuildAnimPresenter::FindNodeByName(LegoTreeNode* p_treeNode if (p_treeNode) { data = (LegoAnimNodeData*) p_treeNode->GetData(); - if (SDL_strcasecmp(data->GetName(), p_name) == 0) { + if (MORTAR_strcasecmp(data->GetName(), p_name) == 0) { return p_treeNode; } @@ -541,9 +541,9 @@ void LegoCarBuildAnimPresenter::AddPartToBuildByName(const LegoChar* p_name) MxS16 i; LegoChar buffer[40]; - if (SDL_strcasecmp(m_parts[m_placedPartCount].m_name, p_name) != 0) { + if (MORTAR_strcasecmp(m_parts[m_placedPartCount].m_name, p_name) != 0) { for (i = m_placedPartCount + 1; i < m_numberOfParts; i++) { - if (SDL_strcasecmp(m_parts[i].m_name, p_name) == 0) { + if (MORTAR_strcasecmp(m_parts[i].m_name, p_name) == 0) { break; } } @@ -619,7 +619,7 @@ void LegoCarBuildAnimPresenter::MoveShelfForward() // FUNCTION: BETA10 0x100724fa MxBool LegoCarBuildAnimPresenter::StringEqualsPlatform(const LegoChar* p_string) { - return SDL_strcasecmp(p_string, "PLATFORM") == 0; + return MORTAR_strcasecmp(p_string, "PLATFORM") == 0; } // FUNCTION: LEGO1 0x10079b40 @@ -641,7 +641,7 @@ MxBool LegoCarBuildAnimPresenter::StringEndsOnYOrN(const LegoChar* p_string) // FUNCTION: BETA10 0x10072624 MxBool LegoCarBuildAnimPresenter::StringEqualsShelf(const LegoChar* p_string) { - return SDL_strncasecmp(p_string, "SHELF", strlen("SHELF")) == 0; + return MORTAR_strncasecmp(p_string, "SHELF", strlen("SHELF")) == 0; } // FUNCTION: LEGO1 0x10079c30 @@ -653,7 +653,7 @@ MxBool LegoCarBuildAnimPresenter::IsNextPartToPlace(const LegoChar* p_name) } return m_placedPartCount < m_numberOfParts && - SDL_strncasecmp(p_name, m_parts[m_placedPartCount].m_name, strlen(p_name) - 3) == 0; + MORTAR_strncasecmp(p_name, m_parts[m_placedPartCount].m_name, strlen(p_name) - 3) == 0; } // FUNCTION: LEGO1 0x10079ca0 @@ -661,7 +661,7 @@ MxBool LegoCarBuildAnimPresenter::IsNextPartToPlace(const LegoChar* p_name) MxBool LegoCarBuildAnimPresenter::PartIsPlaced(const LegoChar* p_name) { for (MxS16 i = 0; i < m_placedPartCount; i++) { - if (SDL_strcasecmp(p_name, m_parts[i].m_name) == 0) { + if (MORTAR_strcasecmp(p_name, m_parts[i].m_name) == 0) { return TRUE; } } @@ -688,7 +688,7 @@ MxBool LegoCarBuildAnimPresenter::StringDoesNotEndOnZero(const LegoChar* p_strin const LegoChar* LegoCarBuildAnimPresenter::GetWiredNameByPartName(const LegoChar* p_name) { for (MxS16 i = 0; i < m_numberOfParts; i++) { - if (SDL_strcasecmp(p_name, m_parts[i].m_name) == 0) { + if (MORTAR_strcasecmp(p_name, m_parts[i].m_name) == 0) { return m_parts[i].m_wiredName; } } @@ -701,7 +701,7 @@ const LegoChar* LegoCarBuildAnimPresenter::GetWiredNameByPartName(const LegoChar void LegoCarBuildAnimPresenter::SetPartObjectIdByName(const LegoChar* p_name, MxS16 p_objectId) { for (MxS16 i = 0; i < m_numberOfParts; i++) { - if (SDL_strcasecmp(p_name, m_parts[i].m_name) == 0) { + if (MORTAR_strcasecmp(p_name, m_parts[i].m_name) == 0) { m_parts[i].m_objectId = p_objectId; return; } diff --git a/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp b/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp index 0f19e329..8f4b2c85 100644 --- a/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp +++ b/LEGO1/lego/legoomni/src/common/legoanimationmanager.cpp @@ -28,7 +28,7 @@ #include "realtime/realtime.h" #include "viewmanager/viewmanager.h" -#include +#include #include #include @@ -641,9 +641,9 @@ MxResult LegoAnimationManager::LoadWorldInfo(LegoOmni::World p_worldId) strcat(path, filename); MxString::MapPathToFilesystem(path); - SDL_PathInfo pathInfo; + MORTAR_PathInfo pathInfo; - if (!SDL_GetPathInfo(path, &pathInfo) || pathInfo.type != SDL_PATHTYPE_FILE) { + if (!MORTAR_GetPathInfo(path, &pathInfo) || pathInfo.type != MORTAR_PATHTYPE_FILE) { sprintf(path, "%s", MxOmni::GetCD()); if (path[strlen(path) - 1] != '\\') { @@ -653,7 +653,7 @@ MxResult LegoAnimationManager::LoadWorldInfo(LegoOmni::World p_worldId) strcat(path, filename); MxString::MapPathToFilesystem(path); - if (!SDL_GetPathInfo(path, &pathInfo) || pathInfo.type != SDL_PATHTYPE_FILE) { + if (!MORTAR_GetPathInfo(path, &pathInfo) || pathInfo.type != MORTAR_PATHTYPE_FILE) { goto done; } } @@ -750,7 +750,7 @@ MxResult LegoAnimationManager::LoadWorldInfo(LegoOmni::World p_worldId) MxBool LegoAnimationManager::FindVehicle(const char* p_name, MxU32& p_index) { for (MxS32 i = 0; i < sizeOfArray(g_vehicles); i++) { - if (!SDL_strcasecmp(p_name, g_vehicles[i].m_name)) { + if (!MORTAR_strcasecmp(p_name, g_vehicles[i].m_name)) { p_index = i; return TRUE; } @@ -891,7 +891,7 @@ void LegoAnimationManager::FUN_10060480(const LegoChar* p_characterNames[], MxU3 { for (MxS32 i = 0; i < p_numCharacterNames; i++) { for (MxS32 j = 0; j < sizeOfArray(g_characters); j++) { - if (!SDL_strcasecmp(g_characters[j].m_name, p_characterNames[i])) { + if (!MORTAR_strcasecmp(g_characters[j].m_name, p_characterNames[i])) { g_characters[j].m_unk0x08 = TRUE; } } @@ -1200,7 +1200,7 @@ void LegoAnimationManager::CameraTriggerFire(LegoPathActor* p_actor, MxBool, MxU return; } - if (location->m_unk0x5c && location->m_frequency < SDL_rand(100)) { + if (location->m_unk0x5c && location->m_frequency < MORTAR_rand(100)) { return; } } @@ -1595,7 +1595,7 @@ MxResult LegoAnimationManager::Tickle() return SUCCESS; } - m_unk0x410 = SDL_rand(10000) + 5000; + m_unk0x410 = MORTAR_rand(10000) + 5000; m_unk0x408 = time; if (time - m_unk0x404 > 10000) { @@ -1702,7 +1702,7 @@ MxS8 LegoAnimationManager::GetCharacterIndex(const char* p_name) MxS8 i; for (i = 0; i < sizeOfArray(g_characters); i++) { - if (!SDL_strncasecmp(p_name, g_characters[i].m_name, 2)) { + if (!MORTAR_strncasecmp(p_name, g_characters[i].m_name, 2)) { return i; } } @@ -1753,7 +1753,7 @@ MxBool LegoAnimationManager::ModelExists(AnimInfo& p_info, const char* p_name) if (models != NULL && modelCount) { for (MxU8 i = 0; i < modelCount; i++) { - if (!SDL_strcasecmp(models[i].m_name, p_name)) { + if (!MORTAR_strcasecmp(models[i].m_name, p_name)) { return TRUE; } } @@ -1933,7 +1933,7 @@ void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und) } if (i != m_numAllowedExtras) { - MxU8 und = SDL_rand(2) != 0 ? 1 : 2; + MxU8 und = MORTAR_rand(2) != 0 ? 1 : 2; MxBool bool1, bool2; switch (g_unk0x100f7504 % 4) { @@ -1990,7 +1990,7 @@ void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und) active = TRUE; } else { - active = SDL_rand(100) < 50; + active = MORTAR_rand(100) < 50; } tryNextCharacter: @@ -2035,7 +2035,7 @@ void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und) MxS32 vehicleId = g_characters[m_lastExtraCharacterId].m_vehicleId; if (vehicleId >= 0) { g_vehicles[vehicleId].m_unk0x04 = - SDL_rand(100) < g_characters[m_lastExtraCharacterId].m_unk0x15; + MORTAR_rand(100) < g_characters[m_lastExtraCharacterId].m_unk0x15; } if (FUN_10063b90( @@ -2053,10 +2053,10 @@ void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und) float speed; if (m_extras[i].m_unk0x14) { - speed = 0.9f + 1.5f * SDL_randf(); + speed = 0.9f + 1.5f * MORTAR_randf(); } else { - speed = 0.6f + 1.4f * SDL_randf(); + speed = 0.6f + 1.4f * MORTAR_randf(); } actor->SetWorldSpeed(speed); @@ -2116,7 +2116,7 @@ MxBool LegoAnimationManager::FUN_10062e20(LegoROI* p_roi, LegoAnimPresenter* p_p MxS32 i; for (i = 0; i < (MxS32) sizeOfArray(g_characters); i++) { - if (!SDL_strcasecmp(name, g_characters[i].m_name)) { + if (!MORTAR_strcasecmp(name, g_characters[i].m_name)) { characterId = i; break; } @@ -2192,7 +2192,7 @@ MxBool LegoAnimationManager::FUN_10062e20(LegoROI* p_roi, LegoAnimPresenter* p_p if (!local24) { MxU8 unk0x0c; - switch (SDL_rand(3)) { + switch (MORTAR_rand(3)) { case 0: unk0x0c = 1; break; @@ -2459,10 +2459,10 @@ void LegoAnimationManager::FUN_10063d10() if (speed < 0.0f) { if (m_extras[i].m_unk0x14) { - speed = 0.9f + 1.5f * SDL_randf(); + speed = 0.9f + 1.5f * MORTAR_randf(); } else { - speed = 0.6f + 1.4f * SDL_randf(); + speed = 0.6f + 1.4f * MORTAR_randf(); } } @@ -2546,7 +2546,7 @@ MxBool LegoAnimationManager::FUN_10064010(LegoPathBoundary* p_boundary, LegoOrie MxBool LegoAnimationManager::FUN_10064120(LegoLocation::Boundary* p_boundary, MxBool p_bool1, MxBool p_bool2) { MxU32 local2c = 12; - float destScale = 0.25f + 0.5f * SDL_randf(); + float destScale = 0.25f + 0.5f * MORTAR_randf(); LegoPathActor* actor = UserActor(); if (actor == NULL) { @@ -2665,7 +2665,7 @@ MxResult LegoAnimationManager::FUN_10064380( extraIndex = i; } - if (roi != NULL && !SDL_strcasecmp(roi->GetName(), p_name)) { + if (roi != NULL && !MORTAR_strcasecmp(roi->GetName(), p_name)) { actor = CharacterManager()->GetExtraActor(p_name); if (actor != NULL && actor->GetController() != NULL) { @@ -2683,7 +2683,7 @@ MxResult LegoAnimationManager::FUN_10064380( MxS32 characterId; for (characterId = 0; characterId < (MxS32) sizeOfArray(g_characters); characterId++) { - if (!SDL_strcasecmp(g_characters[characterId].m_name, p_name)) { + if (!MORTAR_strcasecmp(g_characters[characterId].m_name, p_name)) { break; } } @@ -2701,7 +2701,7 @@ MxResult LegoAnimationManager::FUN_10064380( } if (actor != NULL) { - MxU8 unk0x0c = SDL_rand(2) != 0 ? 1 : 2; + MxU8 unk0x0c = MORTAR_rand(2) != 0 ? 1 : 2; actor->SetUnknown0x0c(unk0x0c); actor->SetWorldSpeed(0.0f); @@ -2757,7 +2757,19 @@ MxResult LegoAnimationManager::FUN_10064670(Vector3* p_position) } if (success) { - return FUN_10064380("brickstr", "EDG02_95", 1, 0.5f, 3, 0.5f, SDL_rand(3) + 14, -1, SDL_rand(3), -1, 0.5f); + return FUN_10064380( + "brickstr", + "EDG02_95", + 1, + 0.5f, + 3, + 0.5f, + MORTAR_rand(3) + 14, + -1, + MORTAR_rand(3), + -1, + 0.5f + ); } return FAILURE; @@ -2782,11 +2794,11 @@ MxResult LegoAnimationManager::FUN_10064740(Vector3* p_position) if (success) { if (GameState()->GetActorId() != LegoActor::c_mama) { - FUN_10064380("mama", "USR00_47", 1, 0.43f, 3, 0.84f, SDL_rand(3) + 13, -1, SDL_rand(3), -1, 0.7f); + FUN_10064380("mama", "USR00_47", 1, 0.43f, 3, 0.84f, MORTAR_rand(3) + 13, -1, MORTAR_rand(3), -1, 0.7f); } if (GameState()->GetActorId() != LegoActor::c_papa) { - FUN_10064380("papa", "USR00_193", 3, 0.55f, 1, 0.4f, SDL_rand(3) + 13, -1, SDL_rand(3), -1, 0.9f); + FUN_10064380("papa", "USR00_193", 3, 0.55f, 1, 0.4f, MORTAR_rand(3) + 13, -1, MORTAR_rand(3), -1, 0.9f); } return SUCCESS; @@ -2803,7 +2815,7 @@ MxResult LegoAnimationManager::FUN_10064880(const char* p_name, MxS32 p_unk0x0c, LegoROI* roi = m_extras[i].m_roi; if (roi != NULL) { - if (!SDL_strcasecmp(roi->GetName(), p_name)) { + if (!MORTAR_strcasecmp(roi->GetName(), p_name)) { g_characters[m_extras[i].m_characterId].m_unk0x0c = p_unk0x0c; g_characters[m_extras[i].m_characterId].m_unk0x10 = p_unk0x10; return SUCCESS; diff --git a/LEGO1/lego/legoomni/src/common/legocharactermanager.cpp b/LEGO1/lego/legoomni/src/common/legocharactermanager.cpp index 180b8eec..6db67284 100644 --- a/LEGO1/lego/legoomni/src/common/legocharactermanager.cpp +++ b/LEGO1/lego/legoomni/src/common/legocharactermanager.cpp @@ -17,8 +17,8 @@ #include "roi/legolod.h" #include "viewmanager/viewmanager.h" -#include #include +#include #include #include @@ -475,7 +475,7 @@ LegoROI* LegoCharacterManager::CreateActorROI(const char* p_key) goto done; } - if (!SDL_strcasecmp(p_key, "pep")) { + if (!MORTAR_strcasecmp(p_key, "pep")) { LegoActorInfo* pepper = GetActorInfo("pepper"); info->m_sound = pepper->m_sound; @@ -660,7 +660,7 @@ MxBool LegoCharacterManager::SetHeadTexture(LegoROI* p_roi, LegoTextureInfo* p_t MxBool LegoCharacterManager::IsActor(const char* p_name) { for (MxU32 i = 0; i < sizeOfArray(g_actorInfo); i++) { - if (!SDL_strcasecmp(g_actorInfo[i].m_name, p_name)) { + if (!MORTAR_strcasecmp(g_actorInfo[i].m_name, p_name)) { return TRUE; } } @@ -687,7 +687,7 @@ LegoActorInfo* LegoCharacterManager::GetActorInfo(const char* p_name) MxU32 i; for (i = 0; i < sizeOfArray(g_actorInfo); i++) { - if (!SDL_strcasecmp(g_actorInfo[i].m_name, p_name)) { + if (!MORTAR_strcasecmp(g_actorInfo[i].m_name, p_name)) { break; } } @@ -735,7 +735,7 @@ LegoROI* LegoCharacterManager::FindChildROI(LegoROI* p_roi, const char* p_name) for (it = comp->begin(); it != comp->end(); it++) { LegoROI* roi = (LegoROI*) *it; - if (!SDL_strcasecmp(p_name, roi->GetName())) { + if (!MORTAR_strcasecmp(p_name, roi->GetName())) { return roi; } } diff --git a/LEGO1/lego/legoomni/src/common/legogamestate.cpp b/LEGO1/lego/legoomni/src/common/legogamestate.cpp index efdcbf8b..6994f8a2 100644 --- a/LEGO1/lego/legoomni/src/common/legogamestate.cpp +++ b/LEGO1/lego/legoomni/src/common/legogamestate.cpp @@ -59,9 +59,9 @@ #include "sndanim_actions.h" #include "towtrack.h" -#include -#include #include +#include +#include #include DECOMP_SIZE_ASSERT(LegoGameState::Username, 0x0e) @@ -619,7 +619,7 @@ MxResult LegoGameState::AddPlayer(Username& p_player) if (m_playerCount == 9) { GetFileSavePath(&from, 8); - SDL_RemovePath(from.GetData()); + MORTAR_RemovePath(from.GetData()); m_playerCount--; } @@ -627,7 +627,7 @@ MxResult LegoGameState::AddPlayer(Username& p_player) m_players[i] = m_players[i - 1]; GetFileSavePath(&from, i - 1); GetFileSavePath(&to, i); - SDL_RenamePath(from.GetData(), to.GetData()); + MORTAR_RenamePath(from.GetData(), to.GetData()); } m_playerCount++; @@ -652,18 +652,18 @@ void LegoGameState::SwitchPlayer(MxS16 p_playerId) Username selectedName(m_players[p_playerId]); - SDL_RenamePath(from.GetData(), temp.GetData()); + MORTAR_RenamePath(from.GetData(), temp.GetData()); for (MxS16 i = p_playerId; i > 0; i--) { m_players[i] = m_players[i - 1]; GetFileSavePath(&from, i - 1); GetFileSavePath(&to, i); - SDL_RenamePath(from.GetData(), to.GetData()); + MORTAR_RenamePath(from.GetData(), to.GetData()); } m_players[0] = selectedName; GetFileSavePath(&from, 0); - SDL_RenamePath(temp.GetData(), from.GetData()); + MORTAR_RenamePath(temp.GetData(), from.GetData()); } if (Load(0) != SUCCESS) { @@ -1086,8 +1086,8 @@ void LegoGameState::SetROIColorOverride() MxBool ROIColorOverride(const char* p_input, char* p_output, MxU32 p_copyLen) { if (p_output != NULL && p_copyLen != 0 && - (SDL_strncasecmp(p_input, "INDIR-F-", strlen("INDIR-F-")) == 0 || - SDL_strncasecmp(p_input, "INDIR-G-", strlen("INDIR-F-")) == 0)) { + (MORTAR_strncasecmp(p_input, "INDIR-F-", strlen("INDIR-F-")) == 0 || + MORTAR_strncasecmp(p_input, "INDIR-G-", strlen("INDIR-F-")) == 0)) { char buf[256]; sprintf(buf, "c_%s", &p_input[strlen("INDIR-F-")]); diff --git a/LEGO1/lego/legoomni/src/common/legostate.cpp b/LEGO1/lego/legoomni/src/common/legostate.cpp index 5c728dc4..c902f4f1 100644 --- a/LEGO1/lego/legoomni/src/common/legostate.cpp +++ b/LEGO1/lego/legoomni/src/common/legostate.cpp @@ -1,5 +1,6 @@ #include "legostate.h" +#include #include DECOMP_SIZE_ASSERT(LegoState, 0x08) @@ -30,7 +31,7 @@ MxU32 LegoState::Playlist::Next() break; case e_random: - m_nextIndex = SDL_rand(m_length); + m_nextIndex = MORTAR_rand(m_length); objectId = m_objectIds[m_nextIndex]; break; diff --git a/LEGO1/lego/legoomni/src/common/legoutils.cpp b/LEGO1/lego/legoomni/src/common/legoutils.cpp index f8ef1bab..beb16a07 100644 --- a/LEGO1/lego/legoomni/src/common/legoutils.cpp +++ b/LEGO1/lego/legoomni/src/common/legoutils.cpp @@ -31,9 +31,9 @@ #include "realtime/realtime.h" #include "scripts.h" -#include -#include -#include +#include +#include +#include #include #include #include @@ -195,11 +195,11 @@ void CalculateViewFromAnimation(LegoAnimPresenter* p_presenter) LegoAnimNodeData* data = (LegoAnimNodeData*) GetTreeNode(rootNode, i)->GetData(); - if (!SDL_strncasecmp(data->GetName(), "CAM", strlen("CAM"))) { + if (!MORTAR_strncasecmp(data->GetName(), "CAM", strlen("CAM"))) { camData = data; fov = atof(&data->GetName()[strlen(data->GetName()) - 2]); } - else if (!SDL_strcasecmp(data->GetName(), "TARGET")) { + else if (!MORTAR_strcasecmp(data->GetName(), "TARGET")) { targetData = data; } } @@ -235,34 +235,34 @@ Extra::ActionType MatchActionString(const char* p_str) { Extra::ActionType result = Extra::ActionType::e_unknown; - if (!SDL_strcasecmp("openram", p_str)) { + if (!MORTAR_strcasecmp("openram", p_str)) { result = Extra::ActionType::e_openram; } - else if (!SDL_strcasecmp("opendisk", p_str)) { + else if (!MORTAR_strcasecmp("opendisk", p_str)) { result = Extra::ActionType::e_opendisk; } - else if (!SDL_strcasecmp("close", p_str)) { + else if (!MORTAR_strcasecmp("close", p_str)) { result = Extra::ActionType::e_close; } - else if (!SDL_strcasecmp("start", p_str)) { + else if (!MORTAR_strcasecmp("start", p_str)) { result = Extra::ActionType::e_start; } - else if (!SDL_strcasecmp("stop", p_str)) { + else if (!MORTAR_strcasecmp("stop", p_str)) { result = Extra::ActionType::e_stop; } - else if (!SDL_strcasecmp("run", p_str)) { + else if (!MORTAR_strcasecmp("run", p_str)) { result = Extra::ActionType::e_run; } - else if (!SDL_strcasecmp("exit", p_str)) { + else if (!MORTAR_strcasecmp("exit", p_str)) { result = Extra::ActionType::e_exit; } - else if (!SDL_strcasecmp("enable", p_str)) { + else if (!MORTAR_strcasecmp("enable", p_str)) { result = Extra::ActionType::e_enable; } - else if (!SDL_strcasecmp("disable", p_str)) { + else if (!MORTAR_strcasecmp("disable", p_str)) { result = Extra::ActionType::e_disable; } - else if (!SDL_strcasecmp("notify", p_str)) { + else if (!MORTAR_strcasecmp("notify", p_str)) { result = Extra::ActionType::e_notify; } @@ -323,7 +323,7 @@ void InvokeAction(Extra::ActionType p_actionId, const MxAtomId& p_pAtom, MxS32 p break; case Extra::ActionType::e_run: { const char* args[] = {"/lego/sources/main/main.exe", "/script", p_pAtom.GetInternal(), NULL}; - SDL_Process* process = SDL_CreateProcess(args, false); + MORTAR_Process* process = MORTAR_CreateProcess(args, false); } break; case Extra::ActionType::e_enable: assert(p_streamId != DS_NOT_A_STREAM); @@ -589,11 +589,11 @@ void EnableAnimations(MxBool p_enable) // FUNCTION: LEGO1 0x1003ef40 void SetAppCursor(Cursor p_cursor) { - SDL_Event event; + MORTAR_Event event; event.user.type = g_legoSdlEvents.m_windowsMessage; event.user.code = WM_ISLE_SETCURSOR; event.user.data1 = (void*) p_cursor; - SDL_PushEvent(&event); + MORTAR_PushEvent(&event); } // FUNCTION: LEGO1 0x1003ef60 @@ -762,7 +762,7 @@ void WriteDefaultTexture(LegoStorage* p_storage, const char* p_name) paletteEntries[i].SetBlue(entries[i].peBlue); } - image->SetPalette(SDL_CreatePalette(i)); + image->SetPalette(MORTAR_CreatePalette(i)); if (i > 0) { for (MxS32 j = 0; j < i; j++) { @@ -806,8 +806,8 @@ void LoadFromNamedTexture(LegoNamedTexture* p_namedTexture) void EmitGameEvent(GameEvent p_event) { - SDL_Event event; + MORTAR_Event event; event.user.type = g_legoSdlEvents.m_gameEvent; event.user.code = p_event; - SDL_PushEvent(&event); + MORTAR_PushEvent(&event); } diff --git a/LEGO1/lego/legoomni/src/common/legovariables.cpp b/LEGO1/lego/legoomni/src/common/legovariables.cpp index 5d2d6cdb..095bf092 100644 --- a/LEGO1/lego/legoomni/src/common/legovariables.cpp +++ b/LEGO1/lego/legoomni/src/common/legovariables.cpp @@ -9,7 +9,7 @@ #include "mxdebug.h" #include "roi/legoroi.h" -#include +#include DECOMP_SIZE_ASSERT(VisibilityVariable, 0x24) DECOMP_SIZE_ASSERT(CameraLocationVariable, 0x24) @@ -119,10 +119,10 @@ void VisibilityVariable::SetValue(const char* p_value) char* name = strtok(NULL, g_delimiter2); MxBool show; - if (!SDL_strcasecmp(instruction, g_varHIDE)) { + if (!MORTAR_strcasecmp(instruction, g_varHIDE)) { show = FALSE; } - else if (!SDL_strcasecmp(instruction, g_varSHOW)) { + else if (!MORTAR_strcasecmp(instruction, g_varSHOW)) { show = TRUE; } else { @@ -168,19 +168,19 @@ void WhoAmIVariable::SetValue(const char* p_value) { MxVariable::SetValue(p_value); - if (!SDL_strcasecmp(p_value, g_papa)) { + if (!MORTAR_strcasecmp(p_value, g_papa)) { GameState()->SetActorId(LegoActor::c_papa); } - else if (!SDL_strcasecmp(p_value, g_mama)) { + else if (!MORTAR_strcasecmp(p_value, g_mama)) { GameState()->SetActorId(LegoActor::c_mama); } - else if (!SDL_strcasecmp(p_value, g_pepper)) { + else if (!MORTAR_strcasecmp(p_value, g_pepper)) { GameState()->SetActorId(LegoActor::c_pepper); } - else if (!SDL_strcasecmp(p_value, g_nick)) { + else if (!MORTAR_strcasecmp(p_value, g_nick)) { GameState()->SetActorId(LegoActor::c_nick); } - else if (!SDL_strcasecmp(p_value, g_laura)) { + else if (!MORTAR_strcasecmp(p_value, g_laura)) { GameState()->SetActorId(LegoActor::c_laura); } } diff --git a/LEGO1/lego/legoomni/src/common/mxcontrolpresenter.cpp b/LEGO1/lego/legoomni/src/common/mxcontrolpresenter.cpp index 79bcb6cf..e93ec2de 100644 --- a/LEGO1/lego/legoomni/src/common/mxcontrolpresenter.cpp +++ b/LEGO1/lego/legoomni/src/common/mxcontrolpresenter.cpp @@ -9,9 +9,9 @@ #include "mxtimer.h" #include "mxutilities.h" -#include -#include -#include +#include +#include +#include DECOMP_SIZE_ASSERT(MxControlPresenter, 0x5c) @@ -226,10 +226,10 @@ void MxControlPresenter::ParseExtra() if (KeyValueStringParse(output, g_strSTYLE, extraCopy)) { char* token = strtok(output, g_parseExtraTokens); - if (!SDL_strcasecmp(token, g_strTOGGLE)) { + if (!MORTAR_strcasecmp(token, g_strTOGGLE)) { m_style = e_toggle; } - else if (!SDL_strcasecmp(token, g_strGRID)) { + else if (!MORTAR_strcasecmp(token, g_strGRID)) { m_style = e_grid; token = strtok(NULL, g_parseExtraTokens); assert(token); @@ -239,7 +239,7 @@ void MxControlPresenter::ParseExtra() assert(token); m_rowsOrColumns = atoi(token); } - else if (!SDL_strcasecmp(token, g_strMAP)) { + else if (!MORTAR_strcasecmp(token, g_strMAP)) { m_style = e_map; token = strtok(NULL, g_parseExtraTokens); @@ -262,7 +262,7 @@ void MxControlPresenter::ParseExtra() } if (KeyValueStringParse(output, g_strVISIBILITY, extraCopy)) { - if (!SDL_strcasecmp(output, "FALSE")) { + if (!MORTAR_strcasecmp(output, "FALSE")) { Enable(FALSE); } } diff --git a/LEGO1/lego/legoomni/src/common/mxtransitionmanager.cpp b/LEGO1/lego/legoomni/src/common/mxtransitionmanager.cpp index 725e73d4..a71bded6 100644 --- a/LEGO1/lego/legoomni/src/common/mxtransitionmanager.cpp +++ b/LEGO1/lego/legoomni/src/common/mxtransitionmanager.cpp @@ -12,7 +12,7 @@ #include "mxticklemanager.h" #include "mxvideopresenter.h" -#include +#include DECOMP_SIZE_ASSERT(MxTransitionManager, 0x900) @@ -59,12 +59,12 @@ MxResult MxTransitionManager::GetDDrawSurfaceFromVideoManager() // vtable+0x14 // FUNCTION: LEGO1 0x1004bac0 MxResult MxTransitionManager::Tickle() { - Uint64 time = m_animationSpeed + m_systemTime; - if (time > SDL_GetTicks()) { + uint64_t time = m_animationSpeed + m_systemTime; + if (time > MORTAR_GetTicks()) { return SUCCESS; } - m_systemTime = SDL_GetTicks(); + m_systemTime = MORTAR_GetTicks(); switch (m_mode) { case e_noAnimation: @@ -120,7 +120,7 @@ MxResult MxTransitionManager::StartTransition( action->SetFlags(action->GetFlags() | MxDSAction::c_bit10); } - Uint64 time = SDL_GetTicks(); + uint64_t time = MORTAR_GetTicks(); m_systemTime = time; m_animationSpeed = p_speed; @@ -190,7 +190,7 @@ void MxTransitionManager::DissolveTransition() // ...then shuffle the list (to ensure that we hit each column once) for (i = 0; i < 640; i++) { - MxS32 swap = SDL_rand(640); + MxS32 swap = MORTAR_rand(640); MxU16 t = m_columnOrder[i]; m_columnOrder[i] = m_columnOrder[swap]; m_columnOrder[swap] = t; @@ -198,7 +198,7 @@ void MxTransitionManager::DissolveTransition() // For each scanline, pick a random X offset for (i = 0; i < 480; i++) { - m_randomShift[i] = SDL_rand(640); + m_randomShift[i] = MORTAR_rand(640); } } @@ -286,7 +286,7 @@ void MxTransitionManager::MosaicTransition() } for (i = 0; i < 64; i++) { - MxS32 swap = SDL_rand(64); + MxS32 swap = MORTAR_rand(64); MxU16 t = m_columnOrder[i]; m_columnOrder[i] = m_columnOrder[swap]; m_columnOrder[swap] = t; @@ -294,7 +294,7 @@ void MxTransitionManager::MosaicTransition() // The same is true here. We only need 48 rows. for (i = 0; i < 48; i++) { - m_randomShift[i] = SDL_rand(64); + m_randomShift[i] = MORTAR_rand(64); } DDSURFACEDESC srcDesc = {}; diff --git a/LEGO1/lego/legoomni/src/control/legometerpresenter.cpp b/LEGO1/lego/legoomni/src/control/legometerpresenter.cpp index 4e950119..5f349e41 100644 --- a/LEGO1/lego/legoomni/src/control/legometerpresenter.cpp +++ b/LEGO1/lego/legoomni/src/control/legometerpresenter.cpp @@ -8,8 +8,8 @@ #include "mxutilities.h" #include "mxvariabletable.h" -#include #include +#include DECOMP_SIZE_ASSERT(LegoMeterPresenter, 0x94) @@ -48,16 +48,16 @@ void LegoMeterPresenter::ParseExtra() char output[256]; if (KeyValueStringParse(output, g_strTYPE, extraCopy)) { - if (!SDL_strcasecmp(output, g_strLEFT_TO_RIGHT)) { + if (!MORTAR_strcasecmp(output, g_strLEFT_TO_RIGHT)) { m_layout = e_leftToRight; } - else if (!SDL_strcasecmp(output, g_strRIGHT_TO_LEFT)) { + else if (!MORTAR_strcasecmp(output, g_strRIGHT_TO_LEFT)) { m_layout = e_rightToLeft; } - else if (!SDL_strcasecmp(output, g_strBOTTOM_TO_TOP)) { + else if (!MORTAR_strcasecmp(output, g_strBOTTOM_TO_TOP)) { m_layout = e_bottomToTop; } - else if (!SDL_strcasecmp(output, g_strTOP_TO_BOTTOM)) { + else if (!MORTAR_strcasecmp(output, g_strTOP_TO_BOTTOM)) { m_layout = e_topToBottom; } } diff --git a/LEGO1/lego/legoomni/src/entity/legoactor.cpp b/LEGO1/lego/legoomni/src/entity/legoactor.cpp index bef0991f..8789a8ff 100644 --- a/LEGO1/lego/legoomni/src/entity/legoactor.cpp +++ b/LEGO1/lego/legoomni/src/entity/legoactor.cpp @@ -7,7 +7,7 @@ #include "mxutilities.h" #include "roi/legoroi.h" -#include +#include DECOMP_SIZE_ASSERT(LegoActor, 0x78) @@ -117,7 +117,7 @@ void LegoActor::ParseAction(char* p_extra) } if (KeyValueStringParse(value, g_strVISIBILITY, p_extra)) { - GetROI()->SetVisibility(SDL_strcasecmp(value, "FALSE") != 0); + GetROI()->SetVisibility(MORTAR_strcasecmp(value, "FALSE") != 0); } } @@ -135,7 +135,7 @@ void LegoActor::SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_updateTransform) const char* name = p_roi->GetName(); for (MxU32 i = 1; i <= sizeOfArray(g_actorNames) - 2; i++) { - if (!SDL_strcasecmp(name, g_actorNames[i])) { + if (!MORTAR_strcasecmp(name, g_actorNames[i])) { m_type = e_actor; m_actorId = i; break; diff --git a/LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp b/LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp index d47103e2..cf8dd21b 100644 --- a/LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp +++ b/LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp @@ -26,7 +26,7 @@ #include "realtime/realtimeview.h" #include "viewmanager/viewmanager.h" -#include +#include #include DECOMP_SIZE_ASSERT(LegoNavController, 0x70) @@ -109,17 +109,17 @@ MxU32 g_switchAct = FALSE; LegoAnimationManager::PlayMode g_unk0x100f66bc = LegoAnimationManager::e_unk2; // GLOBAL: LEGO1 0x100f66c0 -SDL_Keycode g_debugPassword[] = { +MORTAR_Keycode g_debugPassword[] = { // "OGEL" - SDLK_O, - SDLK_G, - SDLK_E, - SDLK_L, + MORTARK_O, + MORTARK_G, + MORTARK_E, + MORTARK_L, 0, }; // GLOBAL: LEGO1 0x100f66c8 -SDL_Keycode* g_currentInput = g_debugPassword; +MORTAR_Keycode* g_currentInput = g_debugPassword; // GLOBAL: LEGO1 0x100f66cc MxS32 g_nextCharacter = -1; @@ -441,7 +441,7 @@ MxResult LegoNavController::UpdateLocation(const char* p_location) MxResult result = FAILURE; for (MxS32 i = 0; i < (MxS32) sizeOfArray(g_locations); i++) { - if (!SDL_strcasecmp(p_location, g_locations[i].m_name)) { + if (!MORTAR_strcasecmp(p_location, g_locations[i].m_name)) { MxMatrix mat; LegoROI* viewROI = VideoManager()->GetViewROI(); @@ -655,8 +655,8 @@ MxLong LegoNavController::Notify(MxParam& p_param) { if (((MxNotificationParam&) p_param).GetNotification() == c_notificationKeyPress) { m_unk0x5d = TRUE; - SDL_Keycode originKey = ((LegoEventNotificationParam&) p_param).GetKey(); - SDL_Keycode key = originKey; + MORTAR_Keycode originKey = ((LegoEventNotificationParam&) p_param).GetKey(); + MORTAR_Keycode key = originKey; // This is necessary so any players using the WASD movement option can // also use Debug Mode, which normally makes use of the WASD keys. @@ -665,29 +665,29 @@ MxLong LegoNavController::Notify(MxParam& p_param) // those conflicting debug keys to the arrow keys. if (LegoOmni::GetInstance()->GetInputManager()->GetWasd()) { switch (originKey) { - case SDLK_W: - key = SDLK_UP; + case MORTARK_W: + key = MORTARK_UP; break; - case SDLK_A: - key = SDLK_LEFT; + case MORTARK_A: + key = MORTARK_LEFT; break; - case SDLK_S: - key = SDLK_DOWN; + case MORTARK_S: + key = MORTARK_DOWN; break; - case SDLK_D: - key = SDLK_RIGHT; + case MORTARK_D: + key = MORTARK_RIGHT; break; - case SDLK_UP: - key = SDLK_W; + case MORTARK_UP: + key = MORTARK_W; break; - case SDLK_LEFT: - key = SDLK_A; + case MORTARK_LEFT: + key = MORTARK_A; break; - case SDLK_DOWN: - key = SDLK_S; + case MORTARK_DOWN: + key = MORTARK_S; break; - case SDLK_RIGHT: - key = SDLK_D; + case MORTARK_RIGHT: + key = MORTARK_D; break; default: break; @@ -695,7 +695,7 @@ MxLong LegoNavController::Notify(MxParam& p_param) } switch (key) { - case SDLK_PAUSE: // Pause game + case MORTARK_PAUSE: // Pause game if (Lego()->IsPaused()) { Lego()->Resume(); } @@ -703,7 +703,7 @@ MxLong LegoNavController::Notify(MxParam& p_param) Lego()->Pause(); } break; - case SDLK_ESCAPE: { // Return to infocenter + case MORTARK_ESCAPE: { // Return to infocenter LegoWorld* currentWorld = CurrentWorld(); if (currentWorld != NULL) { InfocenterState* state = (InfocenterState*) GameState()->GetState("InfocenterState"); @@ -717,10 +717,10 @@ MxLong LegoNavController::Notify(MxParam& p_param) } break; } - case SDLK_SPACE: // Interrupt/end animations or free navigation + case MORTARK_SPACE: // Interrupt/end animations or free navigation AnimationManager()->FUN_10061010(TRUE); break; - case SDLK_Z: { // Make nearby plants "dance" + case MORTARK_Z: { // Make nearby plants "dance" LegoOmni* omni = Lego(); if (omni->GetCurrentWorld() != NULL && omni->GetCurrentWorld()->GetWorldId() == LegoOmni::e_act1) { @@ -754,15 +754,15 @@ MxLong LegoNavController::Notify(MxParam& p_param) } break; } - case SDLK_KP_PLUS: - case SDLK_KP_MINUS: { // Cycles through characters and puts them in front of you + case MORTARK_KP_PLUS: + case MORTARK_KP_MINUS: { // Cycles through characters and puts them in front of you if (g_nextCharacter == -1) { g_nextCharacter = 0; } else { CharacterManager()->ReleaseActor(CharacterManager()->GetActorName(g_nextCharacter)); - if (key == SDLK_KP_PLUS) { + if (key == MORTARK_KP_PLUS) { g_nextCharacter++; if (g_nextCharacter >= CharacterManager()->GetNumActors()) { g_nextCharacter = 0; @@ -789,7 +789,7 @@ MxLong LegoNavController::Notify(MxParam& p_param) } break; } - case SDLK_F12: { // Saves the game + case MORTARK_F12: { // Saves the game InfocenterState* state = (InfocenterState*) GameState()->GetState("InfocenterState"); if (state && state->HasRegistered()) { GameState()->Save(0); @@ -801,7 +801,7 @@ MxLong LegoNavController::Notify(MxParam& p_param) if (!*g_currentInput) { // password "protected" debug shortcuts switch (key) { - case SDLK_TAB: + case MORTARK_TAB: VideoManager()->ToggleFPS(g_fpsEnabled); if (g_fpsEnabled) { g_fpsEnabled = FALSE; @@ -812,16 +812,16 @@ MxLong LegoNavController::Notify(MxParam& p_param) default: m_unk0x5d = FALSE; break; - case SDLK_0: - case SDLK_1: - case SDLK_2: - case SDLK_3: - case SDLK_4: - case SDLK_5: - case SDLK_6: - case SDLK_7: - case SDLK_8: - case SDLK_9: + case MORTARK_0: + case MORTARK_1: + case MORTARK_2: + case MORTARK_3: + case MORTARK_4: + case MORTARK_5: + case MORTARK_6: + case MORTARK_7: + case MORTARK_8: + case MORTARK_9: if (g_changeLight && key <= '1') { LegoROI* roi = VideoManager()->GetViewROI(); Tgl::FloatMatrix4 matrix; @@ -895,7 +895,7 @@ MxLong LegoNavController::Notify(MxParam& p_param) } } - if (g_switchAct && key >= SDLK_1 && key <= SDLK_5) { + if (g_switchAct && key >= MORTARK_1 && key <= MORTARK_5) { switch (GameState()->GetCurrentAct()) { case LegoGameState::e_act1: GameState()->m_currentArea = LegoGameState::e_isle; @@ -909,17 +909,17 @@ MxLong LegoNavController::Notify(MxParam& p_param) } switch (key) { - case SDLK_1: + case MORTARK_1: GameState()->SetCurrentAct(LegoGameState::e_act1); GameState()->SwitchArea(LegoGameState::e_isle); break; - case SDLK_2: + case MORTARK_2: GameState()->SwitchArea(LegoGameState::e_act2main); break; - case SDLK_3: + case MORTARK_3: GameState()->SwitchArea(LegoGameState::e_act3script); break; - case SDLK_4: { + case MORTARK_4: { Act3State* act3State = (Act3State*) GameState()->GetState("Act3State"); if (act3State == NULL) { act3State = new Act3State(); @@ -933,7 +933,7 @@ MxLong LegoNavController::Notify(MxParam& p_param) GameState()->SwitchArea(LegoGameState::e_infomain); break; } - case SDLK_5: { + case MORTARK_5: { Act3State* act3State = (Act3State*) GameState()->GetState("Act3State"); if (act3State == NULL) { act3State = new Act3State(); @@ -958,7 +958,7 @@ MxLong LegoNavController::Notify(MxParam& p_param) LegoOmni::GetInstance()->Start(&action); } break; - case SDLK_A: + case MORTARK_A: if (g_animationCalcStep == 1) { Lego()->m_initialized = TRUE; AnimationManager()->FUN_10060570(TRUE); @@ -974,22 +974,22 @@ MxLong LegoNavController::Notify(MxParam& p_param) } } break; - case SDLK_C: + case MORTARK_C: g_locationCalcStep = 1; break; - case SDLK_D: + case MORTARK_D: m_unk0x60 = -1.0; break; - case SDLK_F: + case MORTARK_F: RealtimeView::SetUserMaxLOD(0.0); break; - case SDLK_G: + case MORTARK_G: g_switchAct = TRUE; break; - case SDLK_H: + case MORTARK_H: RealtimeView::SetUserMaxLOD(5.0); break; - case SDLK_I: { + case MORTARK_I: { LegoROI* roi = VideoManager()->GetViewROI(); MxMatrix mat; mat.SetIdentity(); @@ -997,7 +997,7 @@ MxLong LegoNavController::Notify(MxParam& p_param) roi->WrappedUpdateWorldDataWithTransform(mat); break; } - case SDLK_J: { + case MORTARK_J: { LegoROI* roi = VideoManager()->GetViewROI(); MxMatrix mat; mat.SetIdentity(); @@ -1005,7 +1005,7 @@ MxLong LegoNavController::Notify(MxParam& p_param) roi->WrappedUpdateWorldDataWithTransform(mat); break; } - case SDLK_K: { + case MORTARK_K: { MxMatrix mat; LegoROI* roi = LegoOmni::GetInstance()->GetVideoManager()->GetViewROI(); mat.SetIdentity(); @@ -1013,10 +1013,10 @@ MxLong LegoNavController::Notify(MxParam& p_param) roi->WrappedUpdateWorldDataWithTransform(mat); break; } - case SDLK_L: + case MORTARK_L: g_changeLight = TRUE; break; - case SDLK_M: { + case MORTARK_M: { LegoROI* roi = LegoOmni::GetInstance()->GetVideoManager()->GetViewROI(); MxMatrix mat; mat.SetIdentity(); @@ -1024,12 +1024,12 @@ MxLong LegoNavController::Notify(MxParam& p_param) roi->WrappedUpdateWorldDataWithTransform(mat); break; } - case SDLK_N: + case MORTARK_N: if (VideoManager()) { VideoManager()->SetRender3D(!VideoManager()->GetRender3D()); } break; - case SDLK_P: + case MORTARK_P: if (!g_resetPlants) { PlantManager()->LoadWorldInfo(LegoOmni::e_act1); g_resetPlants = TRUE; @@ -1039,14 +1039,14 @@ MxLong LegoNavController::Notify(MxParam& p_param) g_resetPlants = FALSE; } break; - case SDLK_S: + case MORTARK_S: g_enableMusic = g_enableMusic == FALSE; BackgroundAudioManager()->Enable(g_enableMusic); break; - case SDLK_U: + case MORTARK_U: m_unk0x60 = 1.0; break; - case SDLK_V: + case MORTARK_V: if (g_nextAnimation > 0 && g_animationCalcStep == 0) { AnimationManager()->FUN_10061010(FALSE); } @@ -1058,7 +1058,7 @@ MxLong LegoNavController::Notify(MxParam& p_param) g_nextAnimation = 0; g_animationCalcStep = 1; break; - case SDLK_W: { + case MORTARK_W: { MxMatrix mat; LegoROI* roi = LegoOmni::GetInstance()->GetVideoManager()->GetViewROI(); const float* position = roi->GetWorldPosition(); @@ -1073,10 +1073,10 @@ MxLong LegoNavController::Notify(MxParam& p_param) ); break; } - case SDLK_X: + case MORTARK_X: RealtimeView::SetUserMaxLOD(3.6); break; - case SDLK_KP_MULTIPLY: { + case MORTARK_KP_MULTIPLY: { MxU8 newActor = GameState()->GetActorId() + 1; if (newActor > LegoActor::c_laura) { @@ -1086,10 +1086,10 @@ MxLong LegoNavController::Notify(MxParam& p_param) GameState()->SetActorId(newActor); break; } - case SDLK_KP_DIVIDE: + case MORTARK_KP_DIVIDE: GameState()->SetActorId(LegoActor::c_brickster); break; - case SDLK_F11: + case MORTARK_F11: if (GameState()->m_isDirty) { GameState()->m_isDirty = FALSE; } @@ -1097,7 +1097,7 @@ MxLong LegoNavController::Notify(MxParam& p_param) GameState()->m_isDirty = TRUE; } break; - case SDLK_MINUS: + case MORTARK_MINUS: g_unk0x100f66bc = LegoAnimationManager::e_unk1; break; } diff --git a/LEGO1/lego/legoomni/src/entity/legoworld.cpp b/LEGO1/lego/legoomni/src/entity/legoworld.cpp index f8e9b3cb..311bd44a 100644 --- a/LEGO1/lego/legoomni/src/entity/legoworld.cpp +++ b/LEGO1/lego/legoomni/src/entity/legoworld.cpp @@ -25,7 +25,7 @@ #include "mxutilities.h" #include "viewmanager/viewmanager.h" -#include +#include DECOMP_SIZE_ASSERT(LegoWorld, 0xf8) DECOMP_SIZE_ASSERT(LegoEntityList, 0x18) @@ -429,7 +429,7 @@ void LegoWorld::Add(MxCore* p_object) #ifndef BETA10 if (p_object->IsA("LegoAnimPresenter")) { - if (!SDL_strcasecmp(((LegoAnimPresenter*) p_object)->GetAction()->GetObjectName(), "ConfigAnimation")) { + if (!MORTAR_strcasecmp(((LegoAnimPresenter*) p_object)->GetAction()->GetObjectName(), "ConfigAnimation")) { CalculateViewFromAnimation((LegoAnimPresenter*) p_object); ((LegoAnimPresenter*) p_object) ->GetAction() @@ -601,7 +601,7 @@ MxCore* LegoWorld::Find(const char* p_class, const char* p_name) } LegoROI* roi = entity->GetROI(); - if (roi && !SDL_strcasecmp(roi->GetName(), p_name)) { + if (roi && !MORTAR_strcasecmp(roi->GetName(), p_name)) { return entity; } } @@ -614,7 +614,7 @@ MxCore* LegoWorld::Find(const char* p_class, const char* p_name) MxPresenter* presenter; while (cursor.Next(presenter)) { - if (!SDL_strcasecmp(((LegoAnimPresenter*) presenter)->GetActionObjectName(), p_name)) { + if (!MORTAR_strcasecmp(((LegoAnimPresenter*) presenter)->GetActionObjectName(), p_name)) { return presenter; } } diff --git a/LEGO1/lego/legoomni/src/entity/legoworldpresenter.cpp b/LEGO1/lego/legoomni/src/entity/legoworldpresenter.cpp index 17bfedf2..f1e3d430 100644 --- a/LEGO1/lego/legoomni/src/entity/legoworldpresenter.cpp +++ b/LEGO1/lego/legoomni/src/entity/legoworldpresenter.cpp @@ -27,7 +27,7 @@ #include "mxstl/stlcompat.h" #include "mxutilities.h" -#include +#include #include DECOMP_SIZE_ASSERT(LegoWorldPresenter, 0x54) @@ -36,7 +36,7 @@ DECOMP_SIZE_ASSERT(LegoWorldPresenter, 0x54) MxS32 g_legoWorldPresenterQuality = 1; // GLOBAL: LEGO1 0x100f75d8 -Sint64 g_wdbSkipGlobalPartsOffset = 0; +int64_t g_wdbSkipGlobalPartsOffset = 0; // FUNCTION: LEGO1 0x100665b0 void LegoWorldPresenter::configureLegoWorldPresenter(MxS32 p_legoWorldPresenterQuality) @@ -174,9 +174,9 @@ MxResult LegoWorldPresenter::LoadWorld(char* p_worldName, LegoWorld* p_world) strcat(wdbPath, "lego\\data\\world.wdb"); MxString::MapPathToFilesystem(wdbPath); - SDL_IOStream* wdbFile; + MORTAR_IOStream* wdbFile; - if ((wdbFile = SDL_IOFromFile(wdbPath, "rb")) == NULL) { + if ((wdbFile = MORTAR_IOFromFile(wdbPath, "rb")) == NULL) { sprintf(wdbPath, "%s", MxOmni::GetCD()); if (wdbPath[strlen(wdbPath) - 1] != '\\' && wdbPath[strlen(wdbPath) - 1] != '/') { @@ -186,7 +186,7 @@ MxResult LegoWorldPresenter::LoadWorld(char* p_worldName, LegoWorld* p_world) strcat(wdbPath, "lego\\data\\world.wdb"); MxString::MapPathToFilesystem(wdbPath); - if ((wdbFile = SDL_IOFromFile(wdbPath, "rb")) == NULL) { + if ((wdbFile = MORTAR_IOFromFile(wdbPath, "rb")) == NULL) { return FAILURE; } } @@ -199,7 +199,7 @@ MxResult LegoWorldPresenter::LoadWorld(char* p_worldName, LegoWorld* p_world) ReadModelDbWorlds(wdbFile, worlds, numWorlds); for (i = 0; i < numWorlds; i++) { - if (!SDL_strcasecmp(worlds[i].m_worldName, p_worldName)) { + if (!MORTAR_strcasecmp(worlds[i].m_worldName, p_worldName)) { break; } } @@ -209,12 +209,12 @@ MxResult LegoWorldPresenter::LoadWorld(char* p_worldName, LegoWorld* p_world) } if (g_wdbSkipGlobalPartsOffset == 0) { - if (SDL_ReadIO(wdbFile, &size, sizeof(MxU32)) != sizeof(MxU32)) { + if (MORTAR_ReadIO(wdbFile, &size, sizeof(MxU32)) != sizeof(MxU32)) { return FAILURE; } buff = new MxU8[size]; - if (SDL_ReadIO(wdbFile, buff, size) != size) { + if (MORTAR_ReadIO(wdbFile, buff, size) != size) { return FAILURE; } @@ -229,12 +229,12 @@ MxResult LegoWorldPresenter::LoadWorld(char* p_worldName, LegoWorld* p_world) delete[] buff; - if (SDL_ReadIO(wdbFile, &size, sizeof(MxU32)) != sizeof(MxU32)) { + if (MORTAR_ReadIO(wdbFile, &size, sizeof(MxU32)) != sizeof(MxU32)) { return FAILURE; } buff = new MxU8[size]; - if (SDL_ReadIO(wdbFile, buff, size) != size) { + if (MORTAR_ReadIO(wdbFile, buff, size) != size) { return FAILURE; } @@ -248,10 +248,10 @@ MxResult LegoWorldPresenter::LoadWorld(char* p_worldName, LegoWorld* p_world) delete[] buff; - g_wdbSkipGlobalPartsOffset = SDL_TellIO(wdbFile); + g_wdbSkipGlobalPartsOffset = MORTAR_TellIO(wdbFile); } else { - if (SDL_SeekIO(wdbFile, g_wdbSkipGlobalPartsOffset, SDL_IO_SEEK_SET) != g_wdbSkipGlobalPartsOffset) { + if (MORTAR_SeekIO(wdbFile, g_wdbSkipGlobalPartsOffset, MORTAR_IO_SEEK_SET) != g_wdbSkipGlobalPartsOffset) { return FAILURE; } } @@ -271,25 +271,25 @@ MxResult LegoWorldPresenter::LoadWorld(char* p_worldName, LegoWorld* p_world) } for (j = 0; j < worlds[i].m_numModels; j++) { - if (!SDL_strncasecmp(worlds[i].m_models[j].m_modelName, "isle", 4)) { + if (!MORTAR_strncasecmp(worlds[i].m_models[j].m_modelName, "isle", 4)) { switch (g_legoWorldPresenterQuality) { case 0: - if (SDL_strcasecmp(worlds[i].m_models[j].m_modelName, "isle_lo")) { + if (MORTAR_strcasecmp(worlds[i].m_models[j].m_modelName, "isle_lo")) { continue; } break; case 1: - if (SDL_strcasecmp(worlds[i].m_models[j].m_modelName, "isle")) { + if (MORTAR_strcasecmp(worlds[i].m_models[j].m_modelName, "isle")) { continue; } break; case 2: - if (SDL_strcasecmp(worlds[i].m_models[j].m_modelName, "isle_hi")) { + if (MORTAR_strcasecmp(worlds[i].m_models[j].m_modelName, "isle_hi")) { continue; } } } - else if (g_legoWorldPresenterQuality <= 1 && !SDL_strncasecmp(worlds[i].m_models[j].m_modelName, "haus", 4)) { + else if (g_legoWorldPresenterQuality <= 1 && !MORTAR_strncasecmp(worlds[i].m_models[j].m_modelName, "haus", 4)) { if (worlds[i].m_models[j].m_modelName[4] == '3') { if (LoadWorldModel(worlds[i].m_models[j], wdbFile, p_world) != SUCCESS) { return FAILURE; @@ -313,18 +313,18 @@ MxResult LegoWorldPresenter::LoadWorld(char* p_worldName, LegoWorld* p_world) } FreeModelDbWorlds(worlds, numWorlds); - SDL_CloseIO(wdbFile); + MORTAR_CloseIO(wdbFile); return SUCCESS; } // FUNCTION: LEGO1 0x10067360 -MxResult LegoWorldPresenter::LoadWorldPart(ModelDbPart& p_part, SDL_IOStream* p_wdbFile) +MxResult LegoWorldPresenter::LoadWorldPart(ModelDbPart& p_part, MORTAR_IOStream* p_wdbFile) { MxResult result; MxU8* buff = new MxU8[p_part.m_partDataLength]; - SDL_SeekIO(p_wdbFile, p_part.m_partDataOffset, SDL_IO_SEEK_SET); - if (SDL_ReadIO(p_wdbFile, buff, p_part.m_partDataLength) != p_part.m_partDataLength) { + MORTAR_SeekIO(p_wdbFile, p_part.m_partDataOffset, MORTAR_IO_SEEK_SET); + if (MORTAR_ReadIO(p_wdbFile, buff, p_part.m_partDataLength) != p_part.m_partDataLength) { return FAILURE; } @@ -344,12 +344,12 @@ MxResult LegoWorldPresenter::LoadWorldPart(ModelDbPart& p_part, SDL_IOStream* p_ } // FUNCTION: LEGO1 0x100674b0 -MxResult LegoWorldPresenter::LoadWorldModel(ModelDbModel& p_model, SDL_IOStream* p_wdbFile, LegoWorld* p_world) +MxResult LegoWorldPresenter::LoadWorldModel(ModelDbModel& p_model, MORTAR_IOStream* p_wdbFile, LegoWorld* p_world) { MxU8* buff = new MxU8[p_model.m_modelDataLength]; - SDL_SeekIO(p_wdbFile, p_model.m_modelDataOffset, SDL_IO_SEEK_SET); - if (SDL_ReadIO(p_wdbFile, buff, p_model.m_modelDataLength) != p_model.m_modelDataLength) { + MORTAR_SeekIO(p_wdbFile, p_model.m_modelDataOffset, MORTAR_IO_SEEK_SET); + if (MORTAR_ReadIO(p_wdbFile, buff, p_model.m_modelDataLength) != p_model.m_modelDataLength) { return FAILURE; } diff --git a/LEGO1/lego/legoomni/src/input/legoinputmanager.cpp b/LEGO1/lego/legoomni/src/input/legoinputmanager.cpp index aa631027..fcd54989 100644 --- a/LEGO1/lego/legoomni/src/input/legoinputmanager.cpp +++ b/LEGO1/lego/legoomni/src/input/legoinputmanager.cpp @@ -12,7 +12,7 @@ #include "mxdebug.h" #include "roi/legoroi.h" -#include +#include DECOMP_SIZE_ASSERT(LegoInputManager, 0x338) DECOMP_SIZE_ASSERT(LegoNotifyList, 0x18) @@ -100,27 +100,27 @@ void LegoInputManager::Destroy() for (const auto& [id, joystick] : m_joysticks) { if (joystick.second) { - SDL_CloseHaptic(joystick.second); + MORTAR_CloseHaptic(joystick.second); } - SDL_CloseGamepad(joystick.first); + MORTAR_CloseGamepad(joystick.first); } for (const auto& [id, mouse] : m_mice) { if (mouse.second) { - SDL_CloseHaptic(mouse.second); + MORTAR_CloseHaptic(mouse.second); } } for (const auto& [id, haptic] : m_otherHaptics) { - SDL_CloseHaptic(haptic); + MORTAR_CloseHaptic(haptic); } } // FUNCTION: LEGO1 0x1005c0f0 void LegoInputManager::GetKeyboardState() { - m_keyboardState = SDL_GetKeyboardState(NULL); + m_keyboardState = MORTAR_GetKeyboardState(NULL); } // FUNCTION: LEGO1 0x1005c160 @@ -135,41 +135,41 @@ MxResult LegoInputManager::GetNavigationKeyStates(MxU32& p_keyFlags) MxU32 keyFlags = 0; if (!m_wasd) { - if (m_keyboardState[SDL_SCANCODE_KP_8] || m_keyboardState[SDL_SCANCODE_UP]) { + if (m_keyboardState[MORTAR_SCANCODE_KP_8] || m_keyboardState[MORTAR_SCANCODE_UP]) { keyFlags |= c_up; } - if ((m_keyboardState[SDL_SCANCODE_KP_2] || m_keyboardState[SDL_SCANCODE_DOWN])) { + if ((m_keyboardState[MORTAR_SCANCODE_KP_2] || m_keyboardState[MORTAR_SCANCODE_DOWN])) { keyFlags |= c_down; } - if ((m_keyboardState[SDL_SCANCODE_KP_4] || m_keyboardState[SDL_SCANCODE_LEFT])) { + if ((m_keyboardState[MORTAR_SCANCODE_KP_4] || m_keyboardState[MORTAR_SCANCODE_LEFT])) { keyFlags |= c_left; } - if ((m_keyboardState[SDL_SCANCODE_KP_6] || m_keyboardState[SDL_SCANCODE_RIGHT])) { + if ((m_keyboardState[MORTAR_SCANCODE_KP_6] || m_keyboardState[MORTAR_SCANCODE_RIGHT])) { keyFlags |= c_right; } } else { - if (m_keyboardState[SDL_SCANCODE_W]) { + if (m_keyboardState[MORTAR_SCANCODE_W]) { keyFlags |= c_up; } - if (m_keyboardState[SDL_SCANCODE_S]) { + if (m_keyboardState[MORTAR_SCANCODE_S]) { keyFlags |= c_down; } - if (m_keyboardState[SDL_SCANCODE_A]) { + if (m_keyboardState[MORTAR_SCANCODE_A]) { keyFlags |= c_left; } - if (m_keyboardState[SDL_SCANCODE_D]) { + if (m_keyboardState[MORTAR_SCANCODE_D]) { keyFlags |= c_right; } } - if (m_keyboardState[SDL_SCANCODE_LCTRL] || m_keyboardState[SDL_SCANCODE_RCTRL]) { + if (m_keyboardState[MORTAR_SCANCODE_LCTRL] || m_keyboardState[MORTAR_SCANCODE_RCTRL]) { keyFlags |= c_ctrl; } @@ -183,15 +183,15 @@ MxResult LegoInputManager::GetNavigationKeyStates(MxU32& p_keyFlags) // FUNCTION: LEGO1 0x1005c320 MxResult LegoInputManager::GetJoystickState(MxU32* p_joystickX, MxU32* p_joystickY, MxU32* p_povPosition) { - if (!std::holds_alternative(m_lastInputMethod) && - !(std::holds_alternative(m_lastInputMethod) && m_touchScheme == e_gamepad)) { + if (!std::holds_alternative(m_lastInputMethod) && + !(std::holds_alternative(m_lastInputMethod) && m_touchScheme == e_gamepad)) { return FAILURE; } MxS16 xPos, yPos = 0; for (const auto& [id, joystick] : m_joysticks) { - xPos = SDL_GetGamepadAxis(joystick.first, SDL_GAMEPAD_AXIS_LEFTX); - yPos = SDL_GetGamepadAxis(joystick.first, SDL_GAMEPAD_AXIS_LEFTY); + xPos = MORTAR_GetGamepadAxis(joystick.first, MORTAR_GAMEPAD_AXIS_LEFTX); + yPos = MORTAR_GetGamepadAxis(joystick.first, MORTAR_GAMEPAD_AXIS_LEFTY); if (xPos > -8000 && xPos < 8000) { xPos = 0; } @@ -264,12 +264,12 @@ void LegoInputManager::ClearWorld() } // FUNCTION: LEGO1 0x1005c740 -void LegoInputManager::QueueEvent(NotificationId p_id, MxU8 p_modifier, MxLong p_x, MxLong p_y, SDL_Keycode p_key) +void LegoInputManager::QueueEvent(NotificationId p_id, MxU8 p_modifier, MxLong p_x, MxLong p_y, MORTAR_Keycode p_key) { LegoEventNotificationParam param = LegoEventNotificationParam(p_id, NULL, p_modifier, p_x, p_y, p_key); if (((!m_inputProcessingDisabled) || ((m_unk0x335 && (param.GetNotification() == c_notificationButtonDown)))) || - ((m_unk0x336 && (p_key == SDLK_SPACE)))) { + ((m_unk0x336 && (p_key == MORTARK_SPACE)))) { ProcessOneEvent(param); } } @@ -293,8 +293,8 @@ MxBool LegoInputManager::ProcessOneEvent(LegoEventNotificationParam& p_param) MxBool processRoi; if (p_param.GetNotification() == c_notificationKeyPress) { - if (!Lego()->IsPaused() || p_param.GetKey() == SDLK_PAUSE) { - if (p_param.GetKey() == SDLK_LSHIFT || p_param.GetKey() == SDLK_RSHIFT) { + if (!Lego()->IsPaused() || p_param.GetKey() == MORTARK_PAUSE) { + if (p_param.GetKey() == MORTARK_LSHIFT || p_param.GetKey() == MORTARK_RSHIFT) { if (m_unk0x195) { m_unk0x80 = FALSE; p_param.SetNotification(c_notificationDragEnd); @@ -324,7 +324,7 @@ MxBool LegoInputManager::ProcessOneEvent(LegoEventNotificationParam& p_param) if (m_unk0x335 != 0) { if (p_param.GetNotification() == c_notificationButtonDown) { - LegoEventNotificationParam notification(c_notificationKeyPress, NULL, 0, 0, 0, SDLK_SPACE); + LegoEventNotificationParam notification(c_notificationKeyPress, NULL, 0, 0, 0, MORTARK_SPACE); LegoNotifyListCursor cursor(m_keyboardNotifyList); MxCore* target; @@ -490,22 +490,22 @@ MxBool LegoInputManager::FUN_1005cdf0(LegoEventNotificationParam& p_param) return result; } -static Uint32 SDLCALL LegoInputManagerTimerCallback(void* userdata, SDL_TimerID timerID, Uint32 interval) +static uint32_t LegoInputManagerTimerCallback(void* p_userdata, MORTAR_TimerID p_timerID, uint32_t p_interval) { - LegoInputManager* inputManager = (LegoInputManager*) userdata; - SDL_Event event; - event.type = g_legoSdlEvents.m_windowsMessage; + LegoInputManager* inputManager = (LegoInputManager*) p_userdata; + MORTAR_Event event; + event.user.type = g_legoSdlEvents.m_windowsMessage; event.user.code = WM_TIMER; - event.user.data1 = (void*) (uintptr_t) timerID; + event.user.data1 = (void*) (uintptr_t) p_timerID; event.user.data2 = NULL; - return interval; + return p_interval; } // FUNCTION: LEGO1 0x1005cfb0 // FUNCTION: BETA10 0x10089fc5 void LegoInputManager::StartAutoDragTimer() { - m_autoDragTimerID = SDL_AddTimer(m_autoDragTime, LegoInputManagerTimerCallback, this); + m_autoDragTimerID = MORTAR_AddTimer(m_autoDragTime, LegoInputManagerTimerCallback, this); } // FUNCTION: LEGO1 0x1005cfd0 @@ -513,7 +513,7 @@ void LegoInputManager::StartAutoDragTimer() void LegoInputManager::StopAutoDragTimer() { if (m_autoDragTimerID) { - SDL_RemoveTimer(m_autoDragTimerID); + MORTAR_RemoveTimer(m_autoDragTimerID); m_autoDragTimerID = 0; } } @@ -538,7 +538,7 @@ MxResult LegoInputManager::GetNavigationTouchStates(MxU32& p_keyStates) return SUCCESS; } -void LegoInputManager::AddKeyboard(SDL_KeyboardID p_keyboardID) +void LegoInputManager::AddKeyboard(MORTAR_KeyboardID p_keyboardID) { if (m_keyboards.count(p_keyboardID)) { return; @@ -547,7 +547,7 @@ void LegoInputManager::AddKeyboard(SDL_KeyboardID p_keyboardID) m_keyboards[p_keyboardID] = {nullptr, nullptr}; } -void LegoInputManager::RemoveKeyboard(SDL_KeyboardID p_keyboardID) +void LegoInputManager::RemoveKeyboard(MORTAR_KeyboardID p_keyboardID) { if (!m_keyboards.count(p_keyboardID)) { return; @@ -556,17 +556,17 @@ void LegoInputManager::RemoveKeyboard(SDL_KeyboardID p_keyboardID) m_keyboards.erase(p_keyboardID); } -void LegoInputManager::AddMouse(SDL_MouseID p_mouseID) +void LegoInputManager::AddMouse(MORTAR_MouseID p_mouseID) { if (m_mice.count(p_mouseID)) { return; } // Currently no way to get an individual haptic device for a mouse. - SDL_Haptic* haptic = SDL_OpenHapticFromMouse(); + MORTAR_Haptic* haptic = MORTAR_OpenHapticFromMouse(); if (haptic) { - if (!SDL_InitHapticRumble(haptic)) { - SDL_CloseHaptic(haptic); + if (!MORTAR_InitHapticRumble(haptic)) { + MORTAR_CloseHaptic(haptic); haptic = nullptr; } } @@ -574,31 +574,31 @@ void LegoInputManager::AddMouse(SDL_MouseID p_mouseID) m_mice[p_mouseID] = {nullptr, haptic}; } -void LegoInputManager::RemoveMouse(SDL_MouseID p_mouseID) +void LegoInputManager::RemoveMouse(MORTAR_MouseID p_mouseID) { if (!m_mice.count(p_mouseID)) { return; } if (m_mice[p_mouseID].second) { - SDL_CloseHaptic(m_mice[p_mouseID].second); + MORTAR_CloseHaptic(m_mice[p_mouseID].second); } m_mice.erase(p_mouseID); } -void LegoInputManager::AddJoystick(SDL_JoystickID p_joystickID) +void LegoInputManager::AddJoystick(MORTAR_JoystickID p_joystickID) { if (m_joysticks.count(p_joystickID)) { return; } - SDL_Gamepad* joystick = SDL_OpenGamepad(p_joystickID); + MORTAR_Gamepad* joystick = MORTAR_OpenGamepad(p_joystickID); if (joystick) { - SDL_Haptic* haptic = SDL_OpenHapticFromJoystick(SDL_GetGamepadJoystick(joystick)); + MORTAR_Haptic* haptic = MORTAR_OpenHapticFromJoystick(MORTAR_GetGamepadJoystick(joystick)); if (haptic) { - if (!SDL_InitHapticRumble(haptic)) { - SDL_CloseHaptic(haptic); + if (!MORTAR_InitHapticRumble(haptic)) { + MORTAR_CloseHaptic(haptic); haptic = nullptr; } } @@ -606,27 +606,27 @@ void LegoInputManager::AddJoystick(SDL_JoystickID p_joystickID) m_joysticks[p_joystickID] = {joystick, haptic}; } else { - SDL_Log("Failed to open gamepad: %s", SDL_GetError()); + MORTAR_Log("Failed to open gamepad: %s", MORTAR_GetError()); } } -void LegoInputManager::RemoveJoystick(SDL_JoystickID p_joystickID) +void LegoInputManager::RemoveJoystick(MORTAR_JoystickID p_joystickID) { if (!m_joysticks.count(p_joystickID)) { return; } if (m_joysticks[p_joystickID].second) { - SDL_CloseHaptic(m_joysticks[p_joystickID].second); + MORTAR_CloseHaptic(m_joysticks[p_joystickID].second); } - SDL_CloseGamepad(m_joysticks[p_joystickID].first); + MORTAR_CloseGamepad(m_joysticks[p_joystickID].first); m_joysticks.erase(p_joystickID); } -MxBool LegoInputManager::HandleTouchEvent(SDL_Event* p_event, TouchScheme p_touchScheme) +MxBool LegoInputManager::HandleTouchEvent(MORTAR_Event* p_event, TouchScheme p_touchScheme) { - const SDL_TouchFingerEvent& event = p_event->tfinger; + const MORTAR_TouchFingerEvent& event = p_event->tfinger; m_touchScheme = p_touchScheme; switch (p_touchScheme) { @@ -635,12 +635,12 @@ MxBool LegoInputManager::HandleTouchEvent(SDL_Event* p_event, TouchScheme p_touc return FALSE; case e_arrowKeys: switch (p_event->type) { - case SDL_EVENT_FINGER_UP: - case SDL_EVENT_FINGER_CANCELED: + case MORTAR_EVENT_FINGER_UP: + case MORTAR_EVENT_FINGER_CANCELED: m_touchFlags.erase(event.fingerID); break; - case SDL_EVENT_FINGER_DOWN: - case SDL_EVENT_FINGER_MOTION: + case MORTAR_EVENT_FINGER_DOWN: + case MORTAR_EVENT_FINGER_MOTION: m_touchFlags[event.fingerID] = 0; if (event.y > 3.0 / 4.0) { @@ -661,31 +661,31 @@ MxBool LegoInputManager::HandleTouchEvent(SDL_Event* p_event, TouchScheme p_touc } break; case e_gamepad: { - static SDL_FingerID g_finger = (SDL_FingerID) 0; + static MORTAR_FingerID g_finger = (MORTAR_FingerID) 0; switch (p_event->type) { - case SDL_EVENT_FINGER_DOWN: + case MORTAR_EVENT_FINGER_DOWN: if (!g_finger) { g_finger = event.fingerID; m_touchVirtualThumb = {0, 0}; m_touchVirtualThumbOrigin = {event.x, event.y}; } break; - case SDL_EVENT_FINGER_UP: - case SDL_EVENT_FINGER_CANCELED: + case MORTAR_EVENT_FINGER_UP: + case MORTAR_EVENT_FINGER_CANCELED: if (event.fingerID == g_finger) { g_finger = 0; m_touchVirtualThumb = {0, 0}; m_touchVirtualThumbOrigin = {0, 0}; } break; - case SDL_EVENT_FINGER_MOTION: + case MORTAR_EVENT_FINGER_MOTION: if (event.fingerID == g_finger) { const float thumbstickRadius = 0.25f; const float deltaX = - SDL_clamp(event.x - m_touchVirtualThumbOrigin.x, -thumbstickRadius, thumbstickRadius); + MORTAR_clamp(event.x - m_touchVirtualThumbOrigin.x, -thumbstickRadius, thumbstickRadius); const float deltaY = - SDL_clamp(event.y - m_touchVirtualThumbOrigin.y, -thumbstickRadius, thumbstickRadius); + MORTAR_clamp(event.y - m_touchVirtualThumbOrigin.y, -thumbstickRadius, thumbstickRadius); m_touchVirtualThumb = { (int) (deltaX / thumbstickRadius * 32767.0f), @@ -715,21 +715,21 @@ MxBool LegoInputManager::HandleRumbleEvent( g_hapticsInitialized = true; } - SDL_Haptic* haptic = nullptr; + MORTAR_Haptic* haptic = nullptr; std::visit( overloaded{ - [](SDL_KeyboardID_v p_id) {}, - [&haptic, this](SDL_MouseID_v p_id) { - if (m_mice.count((SDL_MouseID) p_id)) { - haptic = m_mice[(SDL_MouseID) p_id].second; + [](MORTAR_KeyboardID_v p_id) {}, + [&haptic, this](MORTAR_MouseID_v p_id) { + if (m_mice.count((MORTAR_MouseID) p_id)) { + haptic = m_mice[(MORTAR_MouseID) p_id].second; } }, - [&haptic, this](SDL_JoystickID_v p_id) { - if (m_joysticks.count((SDL_JoystickID) p_id)) { - haptic = m_joysticks[(SDL_JoystickID) p_id].second; + [&haptic, this](MORTAR_JoystickID_v p_id) { + if (m_joysticks.count((MORTAR_JoystickID) p_id)) { + haptic = m_joysticks[(MORTAR_JoystickID) p_id].second; } }, - [&haptic, this](SDL_TouchID_v p_id) { + [&haptic, this](MORTAR_TouchID_v p_id) { // We can't currently correlate Touch devices with Haptic devices if (!m_otherHaptics.empty()) { haptic = m_otherHaptics.begin()->second; @@ -740,16 +740,16 @@ MxBool LegoInputManager::HandleRumbleEvent( ); if (haptic) { - return SDL_PlayHapticRumble(haptic, p_strength, p_milliseconds); + return MORTAR_PlayHapticRumble(haptic, p_strength, p_milliseconds); } // A joystick isn't necessarily a haptic device; try basic rumble instead - if (const SDL_JoystickID_v* joystick = std::get_if(&m_lastInputMethod)) { - if (m_joysticks.count((SDL_JoystickID) *joystick)) { - return SDL_RumbleGamepad( - m_joysticks[(SDL_JoystickID) *joystick].first, - SDL_clamp(p_lowFrequencyRumble, 0, 1) * USHRT_MAX, - SDL_clamp(p_highFrequencyRumble, 0, 1) * USHRT_MAX, + if (const MORTAR_JoystickID_v* joystick = std::get_if(&m_lastInputMethod)) { + if (m_joysticks.count((MORTAR_JoystickID) *joystick)) { + return MORTAR_RumbleGamepad( + m_joysticks[(MORTAR_JoystickID) *joystick].first, + MORTAR_clamp(p_lowFrequencyRumble, 0, 1) * USHRT_MAX, + MORTAR_clamp(p_highFrequencyRumble, 0, 1) * USHRT_MAX, p_milliseconds ); } @@ -762,67 +762,67 @@ void LegoInputManager::InitializeHaptics() { // We don't get added/removed events for haptic devices that are not joysticks or mice, // so we initialize "otherHaptics" once at this point. - std::vector existingHaptics; + std::vector existingHaptics; for (const auto& [id, mouse] : m_mice) { if (mouse.second) { - existingHaptics.push_back(SDL_GetHapticID(mouse.second)); + existingHaptics.push_back(MORTAR_GetHapticID(mouse.second)); } } for (const auto& [id, joystick] : m_joysticks) { if (joystick.second) { - existingHaptics.push_back(SDL_GetHapticID(joystick.second)); + existingHaptics.push_back(MORTAR_GetHapticID(joystick.second)); } } int count; - SDL_HapticID* haptics = SDL_GetHaptics(&count); + MORTAR_HapticID* haptics = MORTAR_GetHaptics(&count); if (haptics) { for (int i = 0; i < count; i++) { if (std::find(existingHaptics.begin(), existingHaptics.end(), haptics[i]) == existingHaptics.end()) { - SDL_Haptic* haptic = SDL_OpenHaptic(haptics[i]); + MORTAR_Haptic* haptic = MORTAR_OpenHaptic(haptics[i]); if (haptic) { - if (SDL_InitHapticRumble(haptic)) { + if (MORTAR_InitHapticRumble(haptic)) { m_otherHaptics[haptics[i]] = haptic; } else { - SDL_CloseHaptic(haptic); + MORTAR_CloseHaptic(haptic); } } } } - SDL_free(haptics); + MORTAR_free(haptics); } } -void LegoInputManager::UpdateLastInputMethod(SDL_Event* p_event) +void LegoInputManager::UpdateLastInputMethod(MORTAR_Event* p_event) { switch (p_event->type) { - case SDL_EVENT_KEY_DOWN: - case SDL_EVENT_KEY_UP: - m_lastInputMethod = SDL_KeyboardID_v{p_event->key.which}; + case MORTAR_EVENT_KEY_DOWN: + case MORTAR_EVENT_KEY_UP: + m_lastInputMethod = MORTAR_KeyboardID_v{p_event->key.which}; break; - case SDL_EVENT_MOUSE_BUTTON_DOWN: - case SDL_EVENT_MOUSE_BUTTON_UP: - m_lastInputMethod = SDL_MouseID_v{p_event->button.which}; + case MORTAR_EVENT_MOUSE_BUTTON_DOWN: + case MORTAR_EVENT_MOUSE_BUTTON_UP: + m_lastInputMethod = MORTAR_MouseID_v{p_event->button.which}; break; - case SDL_EVENT_MOUSE_MOTION: - m_lastInputMethod = SDL_MouseID_v{p_event->motion.which}; + case MORTAR_EVENT_MOUSE_MOTION: + m_lastInputMethod = MORTAR_MouseID_v{p_event->motion.which}; break; - case SDL_EVENT_GAMEPAD_BUTTON_DOWN: - case SDL_EVENT_GAMEPAD_BUTTON_UP: - m_lastInputMethod = SDL_JoystickID_v{p_event->gbutton.which}; + case MORTAR_EVENT_GAMEPAD_BUTTON_DOWN: + case MORTAR_EVENT_GAMEPAD_BUTTON_UP: + m_lastInputMethod = MORTAR_JoystickID_v{p_event->gbutton.which}; break; - case SDL_EVENT_GAMEPAD_AXIS_MOTION: - m_lastInputMethod = SDL_JoystickID_v{p_event->gaxis.which}; + case MORTAR_EVENT_GAMEPAD_AXIS_MOTION: + m_lastInputMethod = MORTAR_JoystickID_v{p_event->gaxis.which}; break; - case SDL_EVENT_FINGER_MOTION: - case SDL_EVENT_FINGER_DOWN: - case SDL_EVENT_FINGER_UP: - case SDL_EVENT_FINGER_CANCELED: - m_lastInputMethod = SDL_TouchID_v{p_event->tfinger.touchID}; + case MORTAR_EVENT_FINGER_MOTION: + case MORTAR_EVENT_FINGER_DOWN: + case MORTAR_EVENT_FINGER_UP: + case MORTAR_EVENT_FINGER_CANCELED: + m_lastInputMethod = MORTAR_TouchID_v{p_event->tfinger.touchID}; break; } } diff --git a/LEGO1/lego/legoomni/src/main/legomain.cpp b/LEGO1/lego/legoomni/src/main/legomain.cpp index 0f455d7a..f10812c8 100644 --- a/LEGO1/lego/legoomni/src/main/legomain.cpp +++ b/LEGO1/lego/legoomni/src/main/legomain.cpp @@ -34,8 +34,8 @@ #include "scripts.h" #include "viewmanager/viewmanager.h" -#include -#include +#include +#include DECOMP_SIZE_ASSERT(LegoOmni, 0x140) DECOMP_SIZE_ASSERT(LegoOmni::WorldContainer, 0x1c) @@ -190,22 +190,22 @@ MxResult LegoOmni::Create(MxOmniCreateParam& p_param) p_param.CreateFlags().CreateTickleManager(FALSE); if (!(m_tickleManager = new MxTickleManager())) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to create MxTickleManager"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to create MxTickleManager"); goto done; } if (MxOmni::Create(p_param) != SUCCESS) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to create MxOmni"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to create MxOmni"); goto done; } // LINE: BETA10 0x1008d7fa if (!(m_objectFactory = new LegoObjectFactory())) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to create LegoObjectFactory"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to create LegoObjectFactory"); goto done; } // LINE: BETA10 0x1008d882 if (!(m_soundManager = new LegoSoundManager()) || m_soundManager->Create(10, 0) != SUCCESS) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to create LegoSoundManager"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to create LegoSoundManager"); delete m_soundManager; m_soundManager = NULL; goto done; @@ -213,14 +213,14 @@ MxResult LegoOmni::Create(MxOmniCreateParam& p_param) // LINE: BETA10 0x1008d990 if (!(m_videoManager = new LegoVideoManager()) || m_videoManager->Create(p_param.GetVideoParam(), 100, 0) != SUCCESS) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to create LegoVideoManager"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to create LegoVideoManager"); delete m_videoManager; m_videoManager = NULL; goto done; } // LINE: BETA10 0x1008daa7 if (!(m_inputManager = new LegoInputManager()) || m_inputManager->Create(p_param.GetWindowHandle()) != SUCCESS) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to create LegoInputManager"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to create LegoInputManager"); delete m_inputManager; m_inputManager = NULL; goto done; @@ -267,8 +267,8 @@ MxResult LegoOmni::Create(MxOmniCreateParam& p_param) if (!m_viewLODListManager || !m_textureContainer || !m_worldList || !m_characterManager || !m_plantManager || !m_animationManager || !m_buildingManager) { - SDL_LogError( - SDL_LOG_CATEGORY_APPLICATION, + MORTAR_LogError( + MORTAR_LOG_CATEGORY_APPLICATION, "Failed to create " "ViewLODListManager/LegoTextureContainer/LegoCharacterManager/LegoPlantManager/LegoAnimationManager/" "LegoBuildingManager" @@ -280,7 +280,7 @@ MxResult LegoOmni::Create(MxOmniCreateParam& p_param) // LINE: BETA10 0x1008dfbd visibilityVar = new VisibilityVariable(); if (!visibilityVar) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to create VisibilityVariable"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to create VisibilityVariable"); goto done; } m_variableTable->SetVariable(visibilityVar); @@ -288,7 +288,7 @@ MxResult LegoOmni::Create(MxOmniCreateParam& p_param) // LINE: BETA10 0x1008e031 cameraLocationVar = new CameraLocationVariable(); if (!cameraLocationVar) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to create CameraLocationVariable"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to create CameraLocationVariable"); goto done; } m_variableTable->SetVariable(cameraLocationVar); @@ -296,7 +296,7 @@ MxResult LegoOmni::Create(MxOmniCreateParam& p_param) // LINE: BETA10 0x1008e0a5 cursorVar = new CursorVariable(); if (!cursorVar) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to create CursorVariable"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to create CursorVariable"); goto done; } m_variableTable->SetVariable(cursorVar); @@ -304,7 +304,7 @@ MxResult LegoOmni::Create(MxOmniCreateParam& p_param) // LINE: BETA10 0x1008e119 whoAmIVar = new WhoAmIVariable(); if (!whoAmIVar) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to create WhoAmIVariable"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to create WhoAmIVariable"); goto done; } m_variableTable->SetVariable(whoAmIVar); @@ -325,7 +325,7 @@ MxResult LegoOmni::Create(MxOmniCreateParam& p_param) result = RegisterWorlds(); if (result != SUCCESS) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to create RegisterWorlds"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to create RegisterWorlds"); goto done; } #endif @@ -333,7 +333,7 @@ MxResult LegoOmni::Create(MxOmniCreateParam& p_param) // LINE: BETA10 0x1008e206 m_bkgAudioManager = new MxBackgroundAudioManager(); if (!m_bkgAudioManager) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to create MxBackgroundAudioManager"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to create MxBackgroundAudioManager"); goto done; } @@ -342,7 +342,10 @@ MxResult LegoOmni::Create(MxOmniCreateParam& p_param) if (m_transitionManager) { if (m_transitionManager->GetDDrawSurfaceFromVideoManager() != SUCCESS) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "MxTransitionManager::GetDDrawSurfaceFromVideoManager failed"); + MORTAR_LogError( + MORTAR_LOG_CATEGORY_APPLICATION, + "MxTransitionManager::GetDDrawSurfaceFromVideoManager failed" + ); goto done; } @@ -358,7 +361,7 @@ MxResult LegoOmni::Create(MxOmniCreateParam& p_param) result = SUCCESS; } else { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to create MxTransitionManager"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to create MxTransitionManager"); } done: return result; @@ -526,7 +529,7 @@ LegoROI* LegoOmni::FindROI(const char* p_name) const char* name = roi->GetName(); if (name != NULL) { - if (!SDL_strcasecmp(name, p_name)) { + if (!MORTAR_strcasecmp(name, p_name)) { return roi; } } @@ -542,7 +545,7 @@ MxEntity* LegoOmni::AddToWorld(const char* p_id, MxS32 p_entityId, MxPresenter* { LegoWorld* world; - if (SDL_strcasecmp(p_id, g_current)) { + if (MORTAR_strcasecmp(p_id, g_current)) { world = FindWorld(MxAtomId(p_id, e_lowerCase2), p_entityId); } else { @@ -622,7 +625,7 @@ LegoOmni::World LegoOmni::GetWorldId(const char* p_key) for (MxS32 i = 0; i < e_numWorlds; i++) { // Note: m_key is never NULL if (m_worlds[i].m_key != NULL) { - if (!SDL_strcasecmp(m_worlds[i].m_key, p_key)) { + if (!MORTAR_strcasecmp(m_worlds[i].m_key, p_key)) { return m_worlds[i].m_id; } } diff --git a/LEGO1/lego/legoomni/src/paths/legoextraactor.cpp b/LEGO1/lego/legoomni/src/paths/legoextraactor.cpp index e6f7153a..aabdcc51 100644 --- a/LEGO1/lego/legoomni/src/paths/legoextraactor.cpp +++ b/LEGO1/lego/legoomni/src/paths/legoextraactor.cpp @@ -122,7 +122,7 @@ void LegoExtraActor::VTable0xa4(MxBool& p_und1, MxS32& p_und2) break; default: p_und1 = TRUE; - p_und2 = 1 + SDL_rand(p_und2); + p_und2 = 1 + MORTAR_rand(p_und2); break; } } diff --git a/LEGO1/lego/legoomni/src/paths/legopathactor.cpp b/LEGO1/lego/legoomni/src/paths/legopathactor.cpp index 6c0498f2..8905d3ab 100644 --- a/LEGO1/lego/legoomni/src/paths/legopathactor.cpp +++ b/LEGO1/lego/legoomni/src/paths/legopathactor.cpp @@ -16,7 +16,7 @@ #include "mxutilities.h" #include "mxvariabletable.h" -#include +#include #include #include @@ -729,7 +729,7 @@ void LegoPathActor::VTable0xa4(MxBool& p_und1, MxS32& p_und2) case c_nick: case c_brickster: p_und1 = TRUE; - p_und2 = SDL_rand(p_und2) + 1; + p_und2 = MORTAR_rand(p_und2) + 1; break; case c_laura: p_und1 = FALSE; diff --git a/LEGO1/lego/legoomni/src/paths/legopathboundary.cpp b/LEGO1/lego/legoomni/src/paths/legopathboundary.cpp index 31600f3e..d4f289a6 100644 --- a/LEGO1/lego/legoomni/src/paths/legopathboundary.cpp +++ b/LEGO1/lego/legoomni/src/paths/legopathboundary.cpp @@ -6,7 +6,7 @@ #include "legopathactor.h" #include "legopathstruct.h" -#include +#include DECOMP_SIZE_ASSERT(LegoPathBoundary, 0x74) diff --git a/LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp b/LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp index 9a3ac922..9ab7a5e6 100644 --- a/LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp +++ b/LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp @@ -6,7 +6,7 @@ #include "mxticklemanager.h" #include "mxtimer.h" -#include +#include DECOMP_SIZE_ASSERT(LegoPathController, 0x40) DECOMP_SIZE_ASSERT(LegoPathCtrlEdge, 0x40) @@ -109,7 +109,7 @@ MxResult LegoPathController::Create( MxS32 j; for (j = 0; j < sizeOfArray(g_unk0x100f42f0); j++) { - if (!SDL_strcasecmp(g_unk0x100f42f0[j], boundary.GetName())) { + if (!MORTAR_strcasecmp(g_unk0x100f42f0[j], boundary.GetName())) { g_ctrlBoundariesA[j].m_controller = this; g_ctrlBoundariesA[j].m_boundary = &boundary; @@ -120,7 +120,7 @@ MxResult LegoPathController::Create( } for (j = 0; j < sizeOfArray(g_unk0x100f4330); j++) { - if (!SDL_strcasecmp(g_unk0x100f4330[j], boundary.GetName())) { + if (!MORTAR_strcasecmp(g_unk0x100f4330[j], boundary.GetName())) { g_ctrlBoundariesB[j].m_controller = this; g_ctrlBoundariesB[j].m_boundary = &boundary; g_ctrlEdgesB[j].m_controller = this; @@ -400,7 +400,7 @@ MxResult LegoPathController::FUN_10046b30(LegoPathBoundary*& p_boundaries, MxS32 LegoPathBoundary* LegoPathController::GetPathBoundary(const char* p_name) { for (MxS32 i = 0; i < m_numL; i++) { - if (!SDL_strcasecmp(m_boundaries[i].GetName(), p_name)) { + if (!MORTAR_strcasecmp(m_boundaries[i].GetName(), p_name)) { return &m_boundaries[i]; } } diff --git a/LEGO1/lego/legoomni/src/paths/legopathpresenter.cpp b/LEGO1/lego/legoomni/src/paths/legopathpresenter.cpp index 5b2fabfc..a39cca2d 100644 --- a/LEGO1/lego/legoomni/src/paths/legopathpresenter.cpp +++ b/LEGO1/lego/legoomni/src/paths/legopathpresenter.cpp @@ -127,7 +127,7 @@ void LegoPathPresenter::ParseExtra() memcpy(extraCopy, extraData, extraLength); extraCopy[extraLength] = '\0'; - SDL_strupr(extraCopy); + MORTAR_strupr(extraCopy); if (KeyValueStringParse(output, g_strTRIGGERS_SOURCE, extraCopy) != FALSE) { m_trigger = MxAtomId(output, e_lowerCase2); diff --git a/LEGO1/lego/legoomni/src/race/carrace.cpp b/LEGO1/lego/legoomni/src/race/carrace.cpp index 931e01ce..79dbab8f 100644 --- a/LEGO1/lego/legoomni/src/race/carrace.cpp +++ b/LEGO1/lego/legoomni/src/race/carrace.cpp @@ -129,7 +129,7 @@ void CarRace::ReadyWorld() AnimationManager()->Resume(); Disable(FALSE, LegoOmni::c_disableInput | LegoOmni::c_disable3d | LegoOmni::c_clearScreen); - m_introAnimation = g_introAnimations[SDL_rand(8)]; + m_introAnimation = g_introAnimations[MORTAR_rand(8)]; AnimationManager() ->FUN_10060dc0(m_introAnimation, NULL, TRUE, LegoAnimationManager::e_unk0, NULL, FALSE, TRUE, FALSE, TRUE); @@ -235,24 +235,24 @@ MxLong CarRace::HandlePathStruct(LegoPathStructNotificationParam& p_param) if (m_opponent1Laps < m_playerLaps && m_opponent2Laps < m_playerLaps) { score = 3; - m_firstFinishAnimation = g_studsLoosesAnimation[SDL_rand(3)]; - m_secondFinishAnimation = g_rhodaLoosesAnimation[SDL_rand(3)]; + m_firstFinishAnimation = g_studsLoosesAnimation[MORTAR_rand(3)]; + m_secondFinishAnimation = g_rhodaLoosesAnimation[MORTAR_rand(3)]; } else if (m_opponent1Laps < m_playerLaps || m_opponent2Laps < m_playerLaps) { score = 2; if (m_opponent1Laps == g_lapsCount) { - m_firstFinishAnimation = g_studsWinsAnimations[SDL_rand(4)]; - m_secondFinishAnimation = g_rhodaLoosesAnimation[SDL_rand(3)]; + m_firstFinishAnimation = g_studsWinsAnimations[MORTAR_rand(4)]; + m_secondFinishAnimation = g_rhodaLoosesAnimation[MORTAR_rand(3)]; } else { - m_firstFinishAnimation = g_rhodaWinsAnimations[SDL_rand(3)]; - m_secondFinishAnimation = g_studsLoosesAnimation[SDL_rand(3)]; + m_firstFinishAnimation = g_rhodaWinsAnimations[MORTAR_rand(3)]; + m_secondFinishAnimation = g_studsLoosesAnimation[MORTAR_rand(3)]; } } else { score = 1; - m_firstFinishAnimation = g_studsWinsAnimations[SDL_rand(4)]; - m_secondFinishAnimation = g_rhodaWinsAnimations[SDL_rand(3)]; + m_firstFinishAnimation = g_studsWinsAnimations[MORTAR_rand(4)]; + m_secondFinishAnimation = g_rhodaWinsAnimations[MORTAR_rand(3)]; } InputManager()->DisableInputProcessing(); diff --git a/LEGO1/lego/legoomni/src/race/legoracers.cpp b/LEGO1/lego/legoomni/src/race/legoracers.cpp index db3700aa..ece1a98d 100644 --- a/LEGO1/lego/legoomni/src/race/legoracers.cpp +++ b/LEGO1/lego/legoomni/src/race/legoracers.cpp @@ -19,7 +19,7 @@ #include "mxvariabletable.h" #include "raceskel.h" -#include +#include #include DECOMP_SIZE_ASSERT(EdgeReference, 0x08) @@ -218,10 +218,10 @@ void LegoRaceCar::InitSoundIndices() { // Note the (likely unintentional) order of operations: `%` is executed before `/`, // so the division is performed at runtime. - g_playerHitStudsSoundsIndex = SDL_rand(sizeOfArray(g_playerHitStudsSounds)); - g_studsHitPlayerSoundsIndex = SDL_rand(sizeOfArray(g_studsHitPlayerSounds)); - g_playerHitRhodaSoundsIndex = SDL_rand(sizeOfArray(g_playerHitRhodaSounds)); - g_rhodaHitPlayerSoundsIndex = SDL_rand(sizeOfArray(g_rhodaHitPlayerSounds)); + g_playerHitStudsSoundsIndex = MORTAR_rand(sizeOfArray(g_playerHitStudsSounds)); + g_studsHitPlayerSoundsIndex = MORTAR_rand(sizeOfArray(g_studsHitPlayerSounds)); + g_playerHitRhodaSoundsIndex = MORTAR_rand(sizeOfArray(g_playerHitRhodaSounds)); + g_rhodaHitPlayerSoundsIndex = MORTAR_rand(sizeOfArray(g_rhodaHitPlayerSounds)); } // FUNCTION: LEGO1 0x10012e60 @@ -479,8 +479,8 @@ MxResult LegoRaceCar::HitActor(LegoPathActor* p_actor, MxBool p_bool) } if (m_userNavFlag) { - MxBool actorIsStuds = SDL_strcasecmp(p_actor->GetROI()->GetName(), "studs") == 0; - MxBool actorIsRhoda = SDL_strcasecmp(p_actor->GetROI()->GetName(), "rhoda") == 0; + MxBool actorIsStuds = MORTAR_strcasecmp(p_actor->GetROI()->GetName(), "studs") == 0; + MxBool actorIsRhoda = MORTAR_strcasecmp(p_actor->GetROI()->GetName(), "rhoda") == 0; MxLong time = Timer()->GetTime(); const char* soundKey = NULL; @@ -577,8 +577,8 @@ MxResult LegoRaceCar::VTable0x9c() void LegoJetski::InitSoundIndices() { // See note in LegoRaceCar::InitSoundIndices - g_hitSnapSoundsIndex = SDL_rand(sizeOfArray(g_hitSnapSounds)); - g_hitValerieSoundsIndex = SDL_rand(sizeOfArray(g_hitValerieSounds)); + g_hitSnapSoundsIndex = MORTAR_rand(sizeOfArray(g_hitSnapSounds)); + g_hitValerieSoundsIndex = MORTAR_rand(sizeOfArray(g_hitValerieSounds)); } // FUNCTION: LEGO1 0x100136a0 @@ -696,8 +696,8 @@ MxResult LegoJetski::HitActor(LegoPathActor* p_actor, MxBool p_bool) } if (m_userNavFlag) { - MxBool actorIsSnap = SDL_strcasecmp(p_actor->GetROI()->GetName(), "snap") == 0; - MxBool actorIsValerie = SDL_strcasecmp(p_actor->GetROI()->GetName(), "valerie") == 0; + MxBool actorIsSnap = MORTAR_strcasecmp(p_actor->GetROI()->GetName(), "snap") == 0; + MxBool actorIsValerie = MORTAR_strcasecmp(p_actor->GetROI()->GetName(), "valerie") == 0; MxLong time = Timer()->GetTime(); const char* soundKey = NULL; diff --git a/LEGO1/lego/legoomni/src/race/legoracespecial.cpp b/LEGO1/lego/legoomni/src/race/legoracespecial.cpp index 409ad137..dd1f80c5 100644 --- a/LEGO1/lego/legoomni/src/race/legoracespecial.cpp +++ b/LEGO1/lego/legoomni/src/race/legoracespecial.cpp @@ -8,7 +8,7 @@ #include "mxmisc.h" #include "mxvariabletable.h" -#include +#include #include // File name verified by BETA10 0x100cedf7 @@ -228,7 +228,7 @@ void LegoCarRaceActor::Animate(float p_time) if (m_animState == 0) { const char* value = VariableTable()->GetVariable(g_raceState); - if (SDL_strcasecmp(value, g_racing) == 0) { + if (MORTAR_strcasecmp(value, g_racing) == 0) { m_animState = 1; m_lastTime = p_time - 1.0f; m_unk0x1c = p_time; @@ -401,7 +401,7 @@ void LegoJetskiRaceActor::Animate(float p_time) { if (m_animState == 0) { const LegoChar* raceState = VariableTable()->GetVariable(g_raceState); - if (!SDL_strcasecmp(raceState, g_racing)) { + if (!MORTAR_strcasecmp(raceState, g_racing)) { m_animState = 1; m_lastTime = p_time - 1.0f; m_unk0x1c = p_time; diff --git a/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp b/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp index ff2f79f7..f2b28acb 100644 --- a/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp +++ b/LEGO1/lego/legoomni/src/video/legoanimpresenter.cpp @@ -27,7 +27,7 @@ #include "realtime/realtime.h" #include "viewmanager/viewmanager.h" -#include +#include #include DECOMP_SIZE_ASSERT(LegoAnimPresenter, 0xbc) @@ -250,7 +250,7 @@ void LegoAnimPresenter::FUN_100692b0() else if (actorType == LegoAnimActorEntry::e_actorType4) { LegoChar* baseName = new LegoChar[strlen(str)]; strcpy(baseName, str + 1); - SDL_strlwr(baseName); + MORTAR_strlwr(baseName); LegoChar* und = FUN_10069150(str); roi = CharacterManager()->FUN_10085a80(und, baseName, TRUE); @@ -274,7 +274,7 @@ void LegoAnimPresenter::FUN_100692b0() *i = '\0'; } - SDL_strlwr(lodName); + MORTAR_strlwr(lodName); LegoChar* und = FUN_10069150(str); roi = CharacterManager()->CreateAutoROI(und, lodName, TRUE); @@ -317,11 +317,11 @@ void LegoAnimPresenter::FUN_100695c0() LegoU32 len = strlen(actorName); strcpy(lodName, actorName); - for (LegoChar* i = &lodName[len - 1]; SDL_isdigit(*i) || *i == '_'; i--) { + for (LegoChar* i = &lodName[len - 1]; MORTAR_isdigit(*i) || *i == '_'; i--) { *i = '\0'; } - SDL_strlwr(lodName); + MORTAR_strlwr(lodName); CharacterManager()->CreateAutoROI(actorName, lodName, FALSE); FUN_100698b0(rois, actorName); @@ -376,7 +376,7 @@ LegoBool LegoAnimPresenter::FUN_100698b0(const CompoundObject& p_rois, const Leg const char* name = roi->GetName(); if (name != NULL) { - if (!SDL_strcasecmp(name, str)) { + if (!MORTAR_strcasecmp(name, str)) { m_sceneROIs->Append(roi); result = TRUE; break; @@ -398,7 +398,7 @@ LegoROI* LegoAnimPresenter::FindROI(const LegoChar* p_name) while (cursor.Next(roi)) { LegoChar* nameOrVar = GetVariableOrIdentity(roi->GetName(), NULL); - if (nameOrVar != NULL && !SDL_strcasecmp(nameOrVar, p_name)) { + if (nameOrVar != NULL && !MORTAR_strcasecmp(nameOrVar, p_name)) { delete[] nameOrVar; return roi; } @@ -436,7 +436,7 @@ void LegoAnimPresenter::FUN_10069b10() if (m_roiMap[index]->GetName() != NULL) { for (MxS32 i = 0; i < m_unk0x94; i++) { if (m_unk0x8c[i] == NULL && m_unk0x90[i] != NULL) { - if (!SDL_strcasecmp(m_unk0x90[i], m_roiMap[index]->GetName())) { + if (!MORTAR_strcasecmp(m_unk0x90[i], m_roiMap[index]->GetName())) { m_unk0x8c[i] = m_roiMap[index]; break; } diff --git a/LEGO1/lego/legoomni/src/video/legomodelpresenter.cpp b/LEGO1/lego/legoomni/src/video/legomodelpresenter.cpp index 8f918c8b..cdfaf3d0 100644 --- a/LEGO1/lego/legoomni/src/video/legomodelpresenter.cpp +++ b/LEGO1/lego/legoomni/src/video/legomodelpresenter.cpp @@ -19,7 +19,7 @@ #include "realtime/realtime.h" #include "roi/legoroi.h" -#include +#include DECOMP_SIZE_ASSERT(LegoModelPresenter, 0x6c) @@ -95,7 +95,7 @@ MxResult LegoModelPresenter::CreateROI(MxDSChunk* p_chunk) storage.Read(textureName, textureNameLength); textureName[textureNameLength] = '\0'; - SDL_strlwr(textureName); + MORTAR_strlwr(textureName); if (textureName[0] == '^') { memmove(textureName, textureName + 1, strlen(textureName)); @@ -313,7 +313,7 @@ void LegoModelPresenter::ParseExtra() list& roiList = currentWorld->GetROIList(); for (list::iterator it = roiList.begin(); it != roiList.end(); it++) { - if (!SDL_strcasecmp((*it)->GetName(), output)) { + if (!MORTAR_strcasecmp((*it)->GetName(), output)) { m_roi = *it; roiList.erase(it); diff --git a/LEGO1/lego/legoomni/src/video/legopartpresenter.cpp b/LEGO1/lego/legoomni/src/video/legopartpresenter.cpp index 10b72caa..80e015d0 100644 --- a/LEGO1/lego/legoomni/src/video/legopartpresenter.cpp +++ b/LEGO1/lego/legoomni/src/video/legopartpresenter.cpp @@ -10,7 +10,7 @@ #include "mxdssubscriber.h" #include "viewmanager/viewlodlist.h" -#include +#include DECOMP_SIZE_ASSERT(LegoLODList, 0x18) DECOMP_SIZE_ASSERT(LegoNamedPart, 0x14) @@ -90,7 +90,7 @@ MxResult LegoPartPresenter::Read(MxDSChunk& p_chunk) storage.Read(textureName, textureNameLength); textureName[textureNameLength] = '\0'; - SDL_strlwr(textureName); + MORTAR_strlwr(textureName); if (textureName[0] == '^') { memmove(textureName, textureName + 1, strlen(textureName)); @@ -164,7 +164,7 @@ MxResult LegoPartPresenter::Read(MxDSChunk& p_chunk) } roiName[roiNameLength] = '\0'; - SDL_strlwr(roiName); + MORTAR_strlwr(roiName); if (storage.Read(&numLODs, sizeof(LegoU32)) != SUCCESS) { goto done; diff --git a/LEGO1/lego/legoomni/src/video/legotexturepresenter.cpp b/LEGO1/lego/legoomni/src/video/legotexturepresenter.cpp index 305692f4..1cee63ad 100644 --- a/LEGO1/lego/legoomni/src/video/legotexturepresenter.cpp +++ b/LEGO1/lego/legoomni/src/video/legotexturepresenter.cpp @@ -9,7 +9,7 @@ #include "mxdirectx/mxdirect3d.h" #include "mxdssubscriber.h" -#include +#include DECOMP_SIZE_ASSERT(LegoTexturePresenter, 0x54) DECOMP_SIZE_ASSERT(LegoNamedTexture, 0x14) @@ -59,7 +59,7 @@ MxResult LegoTexturePresenter::Read(MxDSChunk& p_chunk) } textureName[textureNameLength] = '\0'; - SDL_strlwr(textureName); + MORTAR_strlwr(textureName); texture = new LegoTexture(); if (texture->Read(&storage, hardwareMode) != SUCCESS) { diff --git a/LEGO1/lego/legoomni/src/video/legovideomanager.cpp b/LEGO1/lego/legoomni/src/video/legovideomanager.cpp index 3aa6044f..cdf9786a 100644 --- a/LEGO1/lego/legoomni/src/video/legovideomanager.cpp +++ b/LEGO1/lego/legoomni/src/video/legovideomanager.cpp @@ -19,8 +19,8 @@ #include "tgl/d3drm/impl.h" #include "viewmanager/viewroi.h" -#include -#include +#include +#include #include DECOMP_SIZE_ASSERT(LegoVideoManager, 0x590) @@ -97,7 +97,7 @@ MxResult LegoVideoManager::Create(MxVideoParam& p_videoParam, MxU32 p_frequencyM p_videoParam.SetPalette(palette); if (!p_videoParam.GetPalette()) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "MxPalette::GetPalette returned NULL palette"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "MxPalette::GetPalette returned NULL palette"); goto done; } paletteCreated = TRUE; @@ -107,12 +107,12 @@ MxResult LegoVideoManager::Create(MxVideoParam& p_videoParam, MxU32 p_frequencyM p_videoParam.GetPalette()->GetEntries(paletteEntries); if (CreateDirect3D() != SUCCESS) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "::CreateDirect3D failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "::CreateDirect3D failed"); goto done; } if (deviceEnumerate.DoEnumerate(hwnd) != SUCCESS) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "LegoDeviceEnumerate::DoEnumerate failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "LegoDeviceEnumerate::DoEnumerate failed"); goto done; } @@ -153,7 +153,7 @@ MxResult LegoVideoManager::Create(MxVideoParam& p_videoParam, MxU32 p_frequencyM paletteEntries, sizeof(paletteEntries) / sizeof(paletteEntries[0]) )) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "MxDirect3D::Create failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "MxDirect3D::Create failed"); goto done; } @@ -167,21 +167,21 @@ MxResult LegoVideoManager::Create(MxVideoParam& p_videoParam, MxU32 p_frequencyM p_frequencyMS, p_createThread ) != SUCCESS) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "MxVideoManager::VTable0x28 failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "MxVideoManager::VTable0x28 failed"); goto done; } m_renderer = Tgl::CreateRenderer(); if (!m_renderer) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Tgl::CreateRenderer failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Tgl::CreateRenderer failed"); goto done; } m_3dManager = new Lego3DManager; if (!m_3dManager) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Lego3DManager::Lego3DManager failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Lego3DManager::Lego3DManager failed"); goto done; } @@ -198,14 +198,14 @@ MxResult LegoVideoManager::Create(MxVideoParam& p_videoParam, MxU32 p_frequencyM createStruct.m_d3dDevice = m_direct3d->Direct3DDevice(); if (!m_3dManager->Create(createStruct)) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Lego3DManager::Create failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Lego3DManager::Create failed"); goto done; } ViewLODList* pLODList; if (ConfigureD3DRM() != SUCCESS) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "LegoVideoManager::ConfigureD3DRM failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "LegoVideoManager::ConfigureD3DRM failed"); goto done; } @@ -515,7 +515,7 @@ MxPresenter* LegoVideoManager::GetPresenterByActionObjectName(const char* p_acti continue; } - if (SDL_strcasecmp(presenter->GetAction()->GetObjectName(), p_actionObjectName) == 0) { + if (MORTAR_strcasecmp(presenter->GetAction()->GetObjectName(), p_actionObjectName) == 0) { return presenter; } } diff --git a/LEGO1/lego/legoomni/src/worlds/act3.cpp b/LEGO1/lego/legoomni/src/worlds/act3.cpp index f897bc2e..895fc99b 100644 --- a/LEGO1/lego/legoomni/src/worlds/act3.cpp +++ b/LEGO1/lego/legoomni/src/worlds/act3.cpp @@ -683,7 +683,7 @@ void Act3::ReadyWorld() AnimationManager()->FUN_1005f6d0(FALSE); VideoManager()->Get3DManager()->SetFrustrum(90.0f, 0.1f, 125.0f); - m_unk0x426c = g_unk0x100d95e8[SDL_rand(3)]; + m_unk0x426c = g_unk0x100d95e8[MORTAR_rand(3)]; AnimationManager() ->FUN_10060dc0(m_unk0x426c, NULL, TRUE, LegoAnimationManager::e_unk0, NULL, TRUE, FALSE, FALSE, FALSE); diff --git a/LEGO1/lego/legoomni/src/worlds/gasstation.cpp b/LEGO1/lego/legoomni/src/worlds/gasstation.cpp index d83c172d..0b7c891c 100644 --- a/LEGO1/lego/legoomni/src/worlds/gasstation.cpp +++ b/LEGO1/lego/legoomni/src/worlds/gasstation.cpp @@ -22,7 +22,7 @@ #include "radio.h" #include "scripts.h" -#include +#include DECOMP_SIZE_ASSERT(GasStation, 0x128) DECOMP_SIZE_ASSERT(GasStationState, 0x24) @@ -346,9 +346,9 @@ MxLong GasStation::HandleEndAction(MxEndActionNotificationParam& p_param) } // FUNCTION: LEGO1 0x10005920 -MxLong GasStation::HandleKeyPress(SDL_Keycode p_key) +MxLong GasStation::HandleKeyPress(MORTAR_Keycode p_key) { - if (p_key == SDLK_SPACE && g_animationSkipCounterGasStation == 0 && m_setWithCurrentAction != 0) { + if (p_key == MORTARK_SPACE && g_animationSkipCounterGasStation == 0 && m_setWithCurrentAction != 0) { m_state->StopActions(); return 1; } @@ -364,7 +364,7 @@ MxLong GasStation::HandleButtonDown(LegoControlManagerNotificationParam& p_param LegoROI* roi = PickROI(p_param.GetX(), p_param.GetY()); if (roi != NULL) { - if (!SDL_strncasecmp(roi->GetName(), "capdb", 5) || !SDL_strncasecmp(roi->GetName(), "*capdb", 6)) { + if (!MORTAR_strncasecmp(roi->GetName(), "capdb", 5) || !MORTAR_strncasecmp(roi->GetName(), "*capdb", 6)) { m_waitingState = e_canceled; m_waiting = FALSE; diff --git a/LEGO1/lego/legoomni/src/worlds/historybook.cpp b/LEGO1/lego/legoomni/src/worlds/historybook.cpp index 89de03d9..bd613873 100644 --- a/LEGO1/lego/legoomni/src/worlds/historybook.cpp +++ b/LEGO1/lego/legoomni/src/worlds/historybook.cpp @@ -10,7 +10,7 @@ #include "mxstillpresenter.h" #include "mxtransitionmanager.h" -#include +#include DECOMP_SIZE_ASSERT(HistoryBook, 0x3e4) @@ -194,8 +194,8 @@ void HistoryBook::ReadyWorld() index += m_intAlphabetOffset; if (index >= sizeOfArray(m_intAlphabet) || !m_intAlphabet[index]) { - SDL_Log("Warning: international character not present in current game. Falling back to X"); - return &m_alphabet[SDLK_X - SDLK_A]; + MORTAR_Log("Warning: international character not present in current game. Falling back to X"); + return &m_alphabet[MORTARK_X - MORTARK_A]; } return &m_intAlphabet[index]; diff --git a/LEGO1/lego/legoomni/src/worlds/hospital.cpp b/LEGO1/lego/legoomni/src/worlds/hospital.cpp index cd75e1a1..d7612a46 100644 --- a/LEGO1/lego/legoomni/src/worlds/hospital.cpp +++ b/LEGO1/lego/legoomni/src/worlds/hospital.cpp @@ -20,7 +20,7 @@ #include "mxtransitionmanager.h" #include "scripts.h" -#include +#include DECOMP_SIZE_ASSERT(Hospital, 0x12c) DECOMP_SIZE_ASSERT(HospitalState, 0x18) @@ -220,11 +220,11 @@ void Hospital::ReadyWorld() } // FUNCTION: LEGO1 0x10074dd0 -MxLong Hospital::HandleKeyPress(SDL_Keycode p_key) +MxLong Hospital::HandleKeyPress(MORTAR_Keycode p_key) { MxLong result = 0; - if (p_key == SDLK_SPACE && g_animationSkipCounterHospital == 0) { + if (p_key == MORTARK_SPACE && g_animationSkipCounterHospital == 0) { DeleteObjects(&m_atomId, HospitalScript::c_hho002cl_RunAnim, HospitalScript::c_hho006cl_RunAnim); result = 1; } @@ -406,7 +406,7 @@ MxLong Hospital::HandleButtonDown(LegoControlManagerNotificationParam& p_param) roiName += 1; } - if (!SDL_strcasecmp("actor_ha", roiName)) { + if (!MORTAR_strcasecmp("actor_ha", roiName)) { InputManager()->DisableInputProcessing(); m_interactionMode = 3; diff --git a/LEGO1/lego/legoomni/src/worlds/infocenter.cpp b/LEGO1/lego/legoomni/src/worlds/infocenter.cpp index 8884551b..4b7f4c04 100644 --- a/LEGO1/lego/legoomni/src/worlds/infocenter.cpp +++ b/LEGO1/lego/legoomni/src/worlds/infocenter.cpp @@ -709,11 +709,11 @@ MxU8 Infocenter::HandleMouseMove(MxS32 p_x, MxS32 p_y) // FUNCTION: LEGO1 0x1006fda0 // FUNCTION: BETA10 0x1002f907 -MxLong Infocenter::HandleKeyPress(SDL_Keycode p_key) +MxLong Infocenter::HandleKeyPress(MORTAR_Keycode p_key) { MxLong result = 0; - if (p_key == SDLK_SPACE && m_worldStarted) { + if (p_key == MORTARK_SPACE && m_worldStarted) { switch (m_infocenterState->m_state) { case InfocenterState::e_playCutscene: StopCutscene(); @@ -1147,7 +1147,9 @@ MxLong Infocenter::HandleNotification0(MxNotificationParam& p_param) PlayAction(InfomainScript::c_iic043in_RunAnim); } } - else if (sender->IsA("MxEntity") && m_infocenterState->m_state != InfocenterState::e_selectedCharacterAndDestination && m_infocenterState->m_state != InfocenterState::e_exiting) { + else if (sender->IsA("MxEntity") && + m_infocenterState->m_state != InfocenterState::e_selectedCharacterAndDestination && + m_infocenterState->m_state != InfocenterState::e_exiting) { switch (((MxEntity*) sender)->GetEntityId()) { case 5: { m_infoManDialogueTimer = 0; diff --git a/LEGO1/lego/legoomni/src/worlds/isle.cpp b/LEGO1/lego/legoomni/src/worlds/isle.cpp index b06a0a61..c098fe38 100644 --- a/LEGO1/lego/legoomni/src/worlds/isle.cpp +++ b/LEGO1/lego/legoomni/src/worlds/isle.cpp @@ -385,7 +385,7 @@ MxLong Isle::HandleControl(LegoControlManagerNotificationParam& p_param) break; case IsleScript::c_Observe_Plane_Ctl: if (!m_act1state->m_planeActive) { - switch (SDL_rand(3)) { + switch (MORTAR_rand(3)) { case 0: InvokeAction(Extra::e_start, *g_isleScript, IsleScript::c_nic002pr_RunAnim, NULL); break; @@ -573,7 +573,7 @@ void Isle::Enable(MxBool p_enable) MxS32 locations[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; for (MxU32 i = 0; i < 5; i++) { - MxS32 r = SDL_rand(5); + MxS32 r = MORTAR_rand(5); for (MxU32 j = 0; j < sizeOfArray(locations); j++) { if (locations[j] != 0 && r-- == 0) { diff --git a/LEGO1/lego/legoomni/src/worlds/legoact2.cpp b/LEGO1/lego/legoomni/src/worlds/legoact2.cpp index 85faa9e1..7e2c1e5d 100644 --- a/LEGO1/lego/legoomni/src/worlds/legoact2.cpp +++ b/LEGO1/lego/legoomni/src/worlds/legoact2.cpp @@ -173,7 +173,7 @@ MxResult LegoAct2::Tickle() case LegoAct2::e_startSpeech: ((LegoPathActor*) m_pepper->GetEntity())->SetActorState(LegoPathActor::c_disabled); - switch (SDL_rand(3)) { + switch (MORTAR_rand(3)) { case 0: g_bricksterSpeech = Act2mainScript::c_tns002br_RunAnim; break; @@ -817,7 +817,7 @@ void LegoAct2::SpawnBricks() // Unused but present in BETA LegoEntity* entity; - if (SDL_rand(2) == 1) { + if (MORTAR_rand(2) == 1) { m_firstBrick = 0; location = infobridge; MxTrace("infobridge\n"); @@ -841,7 +841,7 @@ void LegoAct2::SpawnBricks() roi = brick->GetROI(); local2world = roi->GetLocal2World(); - if (SDL_rand(2) == 1) { + if (MORTAR_rand(2) == 1) { m_secondBrick = 2; location = store; MxTrace("store\n"); @@ -865,7 +865,7 @@ void LegoAct2::SpawnBricks() roi = brick->GetROI(); local2world = roi->GetLocal2World(); - if (SDL_rand(2) == 1) { + if (MORTAR_rand(2) == 1) { m_thirdBrick = 4; location = h3; MxTrace("h3\n"); @@ -889,8 +889,8 @@ void LegoAct2::SpawnBricks() roi = brick->GetROI(); local2world = roi->GetLocal2World(); - if (SDL_rand(2) == 1) { - if (SDL_rand(2) == 1) { + if (MORTAR_rand(2) == 1) { + if (MORTAR_rand(2) == 1) { m_fourthBrick = 6; location = posta; MxTrace("po.sta.\n"); @@ -902,7 +902,7 @@ void LegoAct2::SpawnBricks() } } else { - if (SDL_rand(2) == 1) { + if (MORTAR_rand(2) == 1) { m_fourthBrick = 8; location = jail; MxTrace("jail\n"); @@ -948,7 +948,7 @@ MxResult LegoAct2::BadEnding() // FUNCTION: BETA10 0x10013fd3 void LegoAct2::CheckBricksterDestroying(MxS32 p_pathData) { - MxU8 randN = SDL_rand(3); + MxU8 randN = MORTAR_rand(3); randN++; switch (p_pathData) { diff --git a/LEGO1/lego/legoomni/src/worlds/police.cpp b/LEGO1/lego/legoomni/src/worlds/police.cpp index e609b319..2317619a 100644 --- a/LEGO1/lego/legoomni/src/worlds/police.cpp +++ b/LEGO1/lego/legoomni/src/worlds/police.cpp @@ -161,7 +161,7 @@ MxLong Police::HandleKeyPress(LegoEventNotificationParam& p_param) { MxLong result = 0; - if (p_param.GetKey() == SDLK_SPACE && m_policeState->GetState() == PoliceState::e_playingAnimation) { + if (p_param.GetKey() == MORTARK_SPACE && m_policeState->GetState() == PoliceState::e_playingAnimation) { DeleteObjects(&m_atomId, PoliceScript::c_nps001ni_RunAnim, PoliceScript::c_nps002la_RunAnim); m_policeState->SetState(PoliceState::e_noAnimation); return 1; @@ -198,7 +198,7 @@ MxBool Police::Escape() PoliceState::PoliceState() { m_state = PoliceState::e_noAnimation; - m_policeScript = (SDL_rand(2) == 0) ? PoliceScript::c_nps002la_RunAnim : PoliceScript::c_nps001ni_RunAnim; + m_policeScript = (MORTAR_rand(2) == 0) ? PoliceScript::c_nps002la_RunAnim : PoliceScript::c_nps001ni_RunAnim; } // FUNCTION: LEGO1 0x1005e990 diff --git a/LEGO1/lego/legoomni/src/worlds/registrationbook.cpp b/LEGO1/lego/legoomni/src/worlds/registrationbook.cpp index a3e068f0..a1b312f3 100644 --- a/LEGO1/lego/legoomni/src/worlds/registrationbook.cpp +++ b/LEGO1/lego/legoomni/src/worlds/registrationbook.cpp @@ -29,7 +29,7 @@ #include "regbook_actions.h" #include "scripts.h" -#include +#include DECOMP_SIZE_ASSERT(RegistrationBook, 0x2d0) @@ -173,14 +173,14 @@ MxLong RegistrationBook::HandleEndAction(MxEndActionNotificationParam& p_param) } // FUNCTION: LEGO1 0x100772d0 -MxLong RegistrationBook::HandleKeyPress(SDL_Keycode p_key) +MxLong RegistrationBook::HandleKeyPress(MORTAR_Keycode p_key) { // keycode is case-insensitive - SDL_Keycode key = p_key; + MORTAR_Keycode key = p_key; MxStillPresenter** intoAlphabet = [this, key]() -> MxStillPresenter** { - if (key >= SDLK_A && key <= SDLK_Z) { - return &m_alphabet[key - SDLK_A]; + if (key >= MORTARK_A && key <= MORTARK_Z) { + return &m_alphabet[key - MORTARK_A]; } for (int i = 0; i < sizeOfArray(m_intAlphabet); i++) { @@ -192,13 +192,13 @@ MxLong RegistrationBook::HandleKeyPress(SDL_Keycode p_key) return nullptr; }(); - if (!intoAlphabet && key != SDLK_BACKSPACE) { - if (key == SDLK_SPACE) { + if (!intoAlphabet && key != MORTARK_BACKSPACE) { + if (key == MORTARK_SPACE) { DeleteObjects(&m_atomId, RegbookScript::c_iic006in_RunAnim, RegbookScript::c_iic008in_PlayWav); BackgroundAudioManager()->RaiseVolume(); } } - else if (key != SDLK_BACKSPACE && m_newName.m_cursorPos < 7) { + else if (key != MORTARK_BACKSPACE && m_newName.m_cursorPos < 7) { m_name[0][m_newName.m_cursorPos] = (*intoAlphabet)->Clone(); if (m_name[0][m_newName.m_cursorPos] != NULL) { @@ -212,14 +212,14 @@ MxLong RegistrationBook::HandleKeyPress(SDL_Keycode p_key) } m_newName.m_letters[m_newName.m_cursorPos] = - key >= SDLK_A && key <= SDLK_Z - ? key - SDLK_A + key >= MORTARK_A && key <= MORTARK_Z + ? key - MORTARK_A : (intoAlphabet - m_intAlphabet) + sizeOfArray(m_alphabet) - m_intAlphabetOffset; m_newName.m_cursorPos++; } } else { - if (key == SDLK_BACKSPACE && m_newName.m_cursorPos > 0) { + if (key == MORTARK_BACKSPACE && m_newName.m_cursorPos > 0) { m_newName.m_cursorPos--; m_name[0][m_newName.m_cursorPos]->Enable(FALSE); @@ -276,13 +276,13 @@ MxLong RegistrationBook::HandleControl(LegoControlManagerNotificationParam& p_pa } if (buttonId < 27) { - HandleKeyPress(SDLK_A + buttonId - 1); + HandleKeyPress(MORTARK_A + buttonId - 1); } else if (intChar) { - HandleKeyPress((SDL_Keycode) intChar->m_character); + HandleKeyPress((MORTAR_Keycode) intChar->m_character); } else { - HandleKeyPress(SDLK_BACKSPACE); + HandleKeyPress(MORTARK_BACKSPACE); } } } @@ -503,8 +503,8 @@ void RegistrationBook::ReadyWorld() index += m_intAlphabetOffset; if (index >= sizeOfArray(m_intAlphabet) || !m_intAlphabet[index]) { - SDL_Log("Warning: international character not present in current game. Falling back to X"); - return &m_alphabet[SDLK_X - SDLK_A]; + MORTAR_Log("Warning: international character not present in current game. Falling back to X"); + return &m_alphabet[MORTARK_X - MORTARK_A]; } return &m_intAlphabet[index]; diff --git a/LEGO1/lego/legoomni/src/worlds/score.cpp b/LEGO1/lego/legoomni/src/worlds/score.cpp index 8a6e955e..9ffe3d11 100644 --- a/LEGO1/lego/legoomni/src/worlds/score.cpp +++ b/LEGO1/lego/legoomni/src/worlds/score.cpp @@ -96,7 +96,7 @@ MxLong Score::Notify(MxParam& p_param) ret = HandleEndAction((MxEndActionNotificationParam&) p_param); break; case c_notificationKeyPress: - if (((LegoEventNotificationParam&) p_param).GetKey() == SDLK_SPACE) { + if (((LegoEventNotificationParam&) p_param).GetKey() == MORTARK_SPACE) { DeleteScript(); } ret = 1; diff --git a/LEGO1/lego/sources/misc/legoimage.cpp b/LEGO1/lego/sources/misc/legoimage.cpp index b086b284..d01399c4 100644 --- a/LEGO1/lego/sources/misc/legoimage.cpp +++ b/LEGO1/lego/sources/misc/legoimage.cpp @@ -13,20 +13,20 @@ LegoPaletteEntry::LegoPaletteEntry() m_color.r = 0; m_color.g = 0; m_color.b = 0; - m_color.a = SDL_ALPHA_OPAQUE; + m_color.a = MORTAR_ALPHA_OPAQUE; } // FUNCTION: LEGO1 0x100994d0 LegoResult LegoPaletteEntry::Read(LegoStorage* p_storage) { LegoResult result; - if ((result = p_storage->Read(&m_color.r, sizeof(Uint8))) != SUCCESS) { + if ((result = p_storage->Read(&m_color.r, sizeof(uint8_t))) != SUCCESS) { return result; } - if ((result = p_storage->Read(&m_color.g, sizeof(Uint8))) != SUCCESS) { + if ((result = p_storage->Read(&m_color.g, sizeof(uint8_t))) != SUCCESS) { return result; } - if ((result = p_storage->Read(&m_color.b, sizeof(Uint8))) != SUCCESS) { + if ((result = p_storage->Read(&m_color.b, sizeof(uint8_t))) != SUCCESS) { return result; } return SUCCESS; @@ -36,13 +36,13 @@ LegoResult LegoPaletteEntry::Read(LegoStorage* p_storage) LegoResult LegoPaletteEntry::Write(LegoStorage* p_storage) const { LegoResult result; - if ((result = p_storage->Write(&m_color.r, sizeof(Uint8))) != SUCCESS) { + if ((result = p_storage->Write(&m_color.r, sizeof(uint8_t))) != SUCCESS) { return result; } - if ((result = p_storage->Write(&m_color.g, sizeof(Uint8))) != SUCCESS) { + if ((result = p_storage->Write(&m_color.g, sizeof(uint8_t))) != SUCCESS) { return result; } - if ((result = p_storage->Write(&m_color.b, sizeof(Uint8))) != SUCCESS) { + if ((result = p_storage->Write(&m_color.b, sizeof(uint8_t))) != SUCCESS) { return result; } return SUCCESS; @@ -58,15 +58,15 @@ LegoImage::LegoImage() // FUNCTION: LEGO1 0x100995a0 LegoImage::LegoImage(LegoU32 p_width, LegoU32 p_height) { - m_surface = SDL_CreateSurface(p_width, p_height, SDL_PIXELFORMAT_INDEX8); + m_surface = MORTAR_CreateSurface(p_width, p_height, MORTAR_PIXELFORMAT_INDEX8); m_palette = NULL; } // FUNCTION: LEGO1 0x100995f0 LegoImage::~LegoImage() { - SDL_DestroySurface(m_surface); - SDL_DestroyPalette(m_palette); + MORTAR_DestroySurface(m_surface); + MORTAR_DestroyPalette(m_palette); } // FUNCTION: LEGO1 0x10099610 @@ -84,9 +84,9 @@ LegoResult LegoImage::Read(LegoStorage* p_storage, LegoU32 p_square) return result; } if (m_palette) { - SDL_DestroyPalette(m_palette); + MORTAR_DestroyPalette(m_palette); } - m_palette = SDL_CreatePalette(count); + m_palette = MORTAR_CreatePalette(count); for (LegoU32 i = 0; i < count; i++) { LegoPaletteEntry paletteEntry; if ((result = paletteEntry.Read(p_storage)) != SUCCESS) { @@ -95,19 +95,19 @@ LegoResult LegoImage::Read(LegoStorage* p_storage, LegoU32 p_square) m_palette->colors[i] = paletteEntry.GetColor(); } if (m_surface) { - SDL_DestroySurface(m_surface); + MORTAR_DestroySurface(m_surface); } - m_surface = SDL_CreateSurface(width, height, SDL_PIXELFORMAT_INDEX8); + m_surface = MORTAR_CreateSurface(width, height, MORTAR_PIXELFORMAT_INDEX8); if ((result = p_storage->Read(m_surface->pixels, width * height)) != SUCCESS) { return result; } if (p_square && width != height) { - SDL_Surface* newSurface; + MORTAR_Surface* newSurface; if (height < width) { LegoU32 aspect = width / height; - newSurface = SDL_CreateSurface(width, width, SDL_PIXELFORMAT_INDEX8); + newSurface = MORTAR_CreateSurface(width, width, MORTAR_PIXELFORMAT_INDEX8); LegoU8* src = (LegoU8*) m_surface->pixels; LegoU8* dst = (LegoU8*) newSurface->pixels; @@ -125,7 +125,7 @@ LegoResult LegoImage::Read(LegoStorage* p_storage, LegoU32 p_square) } else { LegoU32 aspect = height / width; - newSurface = SDL_CreateSurface(height, height, SDL_PIXELFORMAT_INDEX8); + newSurface = MORTAR_CreateSurface(height, height, MORTAR_PIXELFORMAT_INDEX8); LegoU8* src = (LegoU8*) m_surface->pixels; LegoU8* dst = (LegoU8*) newSurface->pixels; @@ -145,7 +145,7 @@ LegoResult LegoImage::Read(LegoStorage* p_storage, LegoU32 p_square) width = height; } - SDL_DestroySurface(m_surface); + MORTAR_DestroySurface(m_surface); m_surface = newSurface; } diff --git a/LEGO1/lego/sources/misc/legoimage.h b/LEGO1/lego/sources/misc/legoimage.h index d0269b82..6207f06a 100644 --- a/LEGO1/lego/sources/misc/legoimage.h +++ b/LEGO1/lego/sources/misc/legoimage.h @@ -3,7 +3,7 @@ #include "legotypes.h" -#include +#include class LegoStorage; @@ -18,13 +18,13 @@ class LegoPaletteEntry { void SetGreen(LegoU8 p_green) { m_color.g = p_green; } LegoU8 GetBlue() const { return m_color.b; } void SetBlue(LegoU8 p_blue) { m_color.b = p_blue; } - SDL_Color GetColor() const { return m_color; } - void SetColor(SDL_Color p_color) { m_color = p_color; } + MORTAR_Color GetColor() const { return m_color; } + void SetColor(MORTAR_Color p_color) { m_color = p_color; } LegoResult Read(LegoStorage* p_storage); LegoResult Write(LegoStorage* p_storage) const; protected: - SDL_Color m_color; + MORTAR_Color m_color; }; // 0x310 @@ -36,10 +36,10 @@ class LegoImage { LegoU32 GetWidth() const { return m_surface->w; } LegoU32 GetHeight() const { return m_surface->h; } LegoU32 GetCount() const { return m_palette ? m_palette->ncolors : 0; } - SDL_Palette* GetPalette() const { return m_palette; } - void SetPalette(SDL_Palette* p_palette) + MORTAR_Palette* GetPalette() const { return m_palette; } + void SetPalette(MORTAR_Palette* p_palette) { - SDL_DestroyPalette(m_palette); + MORTAR_DestroyPalette(m_palette); m_palette = p_palette; } void SetPaletteEntry(LegoU32 p_i, LegoPaletteEntry& p_paletteEntry) @@ -51,8 +51,8 @@ class LegoImage { LegoResult Write(LegoStorage* p_storage); protected: - SDL_Surface* m_surface; - SDL_Palette* m_palette; + MORTAR_Surface* m_surface; + MORTAR_Palette* m_palette; // LegoU32 m_count; // 0x08 // LegoPaletteEntry m_palette[256]; // 0x0c // LegoU8* m_bits; // 0x30c diff --git a/LEGO1/lego/sources/misc/legostorage.cpp b/LEGO1/lego/sources/misc/legostorage.cpp index 6004977c..2f301962 100644 --- a/LEGO1/lego/sources/misc/legostorage.cpp +++ b/LEGO1/lego/sources/misc/legostorage.cpp @@ -45,7 +45,7 @@ LegoFile::LegoFile() LegoFile::~LegoFile() { if (m_file) { - SDL_CloseIO(m_file); + MORTAR_CloseIO(m_file); } } @@ -55,7 +55,7 @@ LegoResult LegoFile::Read(void* p_buffer, LegoU32 p_size) if (!m_file) { return FAILURE; } - if (SDL_ReadIO(m_file, p_buffer, p_size) != p_size) { + if (MORTAR_ReadIO(m_file, p_buffer, p_size) != p_size) { return FAILURE; } return SUCCESS; @@ -67,7 +67,7 @@ LegoResult LegoFile::Write(const void* p_buffer, LegoU32 p_size) if (!m_file) { return FAILURE; } - if (SDL_WriteIO(m_file, p_buffer, p_size) != p_size) { + if (MORTAR_WriteIO(m_file, p_buffer, p_size) != p_size) { return FAILURE; } return SUCCESS; @@ -79,7 +79,7 @@ LegoResult LegoFile::GetPosition(LegoU32& p_position) if (!m_file) { return FAILURE; } - Sint64 position = SDL_TellIO(m_file); + int64_t position = MORTAR_TellIO(m_file); if (position == -1) { return FAILURE; } @@ -93,7 +93,7 @@ LegoResult LegoFile::SetPosition(LegoU32 p_position) if (!m_file) { return FAILURE; } - if (SDL_SeekIO(m_file, p_position, SDL_IO_SEEK_SET) != p_position) { + if (MORTAR_SeekIO(m_file, p_position, MORTAR_IO_SEEK_SET) != p_position) { return FAILURE; } return SUCCESS; @@ -103,7 +103,7 @@ LegoResult LegoFile::SetPosition(LegoU32 p_position) LegoResult LegoFile::Open(const char* p_name, LegoU32 p_mode) { if (m_file) { - SDL_CloseIO(m_file); + MORTAR_CloseIO(m_file); } char mode[4]; mode[0] = '\0'; @@ -126,7 +126,7 @@ LegoResult LegoFile::Open(const char* p_name, LegoU32 p_mode) MxString path(p_name); path.MapPathToFilesystem(); - if (!(m_file = SDL_IOFromFile(path.GetData(), mode))) { + if (!(m_file = MORTAR_IOFromFile(path.GetData(), mode))) { return FAILURE; } return SUCCESS; diff --git a/LEGO1/lego/sources/misc/legostorage.h b/LEGO1/lego/sources/misc/legostorage.h index 4ec29810..7500f737 100644 --- a/LEGO1/lego/sources/misc/legostorage.h +++ b/LEGO1/lego/sources/misc/legostorage.h @@ -5,8 +5,8 @@ #include "mxgeometry/mxgeometry3d.h" #include "mxstring.h" -#include #include +#include // VTABLE: LEGO1 0x100d7d80 // SIZE 0x08 @@ -241,7 +241,7 @@ class LegoFile : public LegoStorage { // LegoFile::`scalar deleting destructor' protected: - SDL_IOStream* m_file; // 0x08 + MORTAR_IOStream* m_file; // 0x08 }; #endif // __LEGOSTORAGE_H diff --git a/LEGO1/lego/sources/roi/legolod.cpp b/LEGO1/lego/sources/roi/legolod.cpp index 2ed81e75..05baaf11 100644 --- a/LEGO1/lego/sources/roi/legolod.cpp +++ b/LEGO1/lego/sources/roi/legolod.cpp @@ -7,7 +7,7 @@ #include "shape/legomesh.h" #include "tgl/d3drm/impl.h" -#include +#include DECOMP_SIZE_ASSERT(LODObject, 0x04) DECOMP_SIZE_ASSERT(ViewLOD, 0x0c) @@ -519,7 +519,7 @@ LegoResult LegoLOD::GetTextureInfo(LegoTextureInfo*& p_textureInfo) // FUNCTION: BETA10 0x1018e46d LegoBool LegoLOD::HasInhPrefix(const LegoChar* p_name) { - if (p_name != NULL && !SDL_strncasecmp(p_name, g_InhPrefix, strlen(g_InhPrefix))) { + if (p_name != NULL && !MORTAR_strncasecmp(p_name, g_InhPrefix, strlen(g_InhPrefix))) { return TRUE; } else { diff --git a/LEGO1/lego/sources/roi/legoroi.cpp b/LEGO1/lego/sources/roi/legoroi.cpp index e7848eda..e8d287f0 100644 --- a/LEGO1/lego/sources/roi/legoroi.cpp +++ b/LEGO1/lego/sources/roi/legoroi.cpp @@ -9,7 +9,7 @@ #include "shape/legobox.h" #include "shape/legosphere.h" -#include +#include #include #include @@ -146,7 +146,7 @@ LegoResult LegoROI::Read( goto done; } m_name[length] = '\0'; - SDL_strlwr(m_name); + MORTAR_strlwr(m_name); if (sphere.Read(p_storage) != SUCCESS) { goto done; @@ -173,7 +173,7 @@ LegoResult LegoROI::Read( goto done; } textureName[length] = '\0'; - SDL_strlwr(textureName); + MORTAR_strlwr(textureName); } else { textureName = NULL; @@ -227,7 +227,7 @@ LegoResult LegoROI::Read( if (g_roiConfig <= 2) { for (i = 0; g_sharedModelsLow[i] != NULL; i++) { - if (!SDL_strncasecmp(m_name, g_sharedModelsLow[i], 4)) { + if (!MORTAR_strncasecmp(m_name, g_sharedModelsLow[i], 4)) { roiName = g_sharedModelsLow[i]; break; } @@ -235,7 +235,7 @@ LegoResult LegoROI::Read( } else { for (i = 0; g_sharedModelsHigh[i] != NULL; i++) { - if (!SDL_strncasecmp(m_name, g_sharedModelsHigh[i], 4)) { + if (!MORTAR_strncasecmp(m_name, g_sharedModelsHigh[i], 4)) { roiName = g_sharedModelsHigh[i]; break; } @@ -244,7 +244,7 @@ LegoResult LegoROI::Read( if ((lodList = p_viewLODListManager->Lookup(roiName))) { for (j = 0; g_alwaysLoadNames[j] != NULL; j++) { - if (!SDL_strcasecmp(g_alwaysLoadNames[j], roiName)) { + if (!MORTAR_strcasecmp(g_alwaysLoadNames[j], roiName)) { break; } } @@ -302,7 +302,7 @@ LegoResult LegoROI::Read( } if (textureName != NULL) { - if (!SDL_strncasecmp(textureName, "t_", 2)) { + if (!MORTAR_strncasecmp(textureName, "t_", 2)) { textureInfo = p_textureContainer->Get(textureName + 2); if (textureInfo == NULL) { @@ -362,7 +362,7 @@ LegoROI* LegoROI::FindChildROI(const LegoChar* p_name, LegoROI* p_roi) CompoundObject::iterator it; const LegoChar* name = p_roi->GetName(); - if (name != NULL && *name != '\0' && !SDL_strcasecmp(name, p_name)) { + if (name != NULL && *name != '\0' && !MORTAR_strcasecmp(name, p_name)) { return p_roi; } @@ -372,7 +372,7 @@ LegoROI* LegoROI::FindChildROI(const LegoChar* p_name, LegoROI* p_roi) LegoROI* roi = (LegoROI*) *it; name = roi->GetName(); - if (name != NULL && *name != '\0' && !SDL_strcasecmp(name, p_name)) { + if (name != NULL && *name != '\0' && !MORTAR_strcasecmp(name, p_name)) { return roi; } } @@ -804,7 +804,7 @@ LegoBool LegoROI::GetRGBAColor(const LegoChar* p_name, float& p_red, float& p_gr LegoBool LegoROI::ColorAliasLookup(const LegoChar* p_param, float& p_red, float& p_green, float& p_blue, float& p_alpha) { for (LegoU32 i = 0; i < sizeOfArray(g_roiColorAliases); i++) { - if (SDL_strcasecmp(g_roiColorAliases[i].m_name, p_param) == 0) { + if (MORTAR_strcasecmp(g_roiColorAliases[i].m_name, p_param) == 0) { p_red = g_roiColorAliases[i].m_red / 255.0; p_green = g_roiColorAliases[i].m_green / 255.0; p_blue = g_roiColorAliases[i].m_blue / 255.0; @@ -851,7 +851,7 @@ void LegoROI::SetName(const LegoChar* p_name) if (p_name != NULL) { m_name = new LegoChar[strlen(p_name) + 1]; strcpy(m_name, p_name); - SDL_strlwr(m_name); + MORTAR_strlwr(m_name); } else { m_name = NULL; diff --git a/LEGO1/lego/sources/shape/legomesh.cpp b/LEGO1/lego/sources/shape/legomesh.cpp index 0101cf14..3343077c 100644 --- a/LEGO1/lego/sources/shape/legomesh.cpp +++ b/LEGO1/lego/sources/shape/legomesh.cpp @@ -2,7 +2,7 @@ #include "misc/legostorage.h" -#include +#include DECOMP_SIZE_ASSERT(LegoMeshUnkComponent, 0x1c) DECOMP_SIZE_ASSERT(LegoMesh, 0x24) @@ -75,7 +75,7 @@ LegoResult LegoMesh::Read(LegoStorage* p_storage) } m_textureName[textureLength] = '\0'; - SDL_strlwr(m_textureName); + MORTAR_strlwr(m_textureName); } if ((result = p_storage->Read(&materialLength, sizeof(LegoU32))) != SUCCESS) { @@ -89,7 +89,7 @@ LegoResult LegoMesh::Read(LegoStorage* p_storage) } m_materialName[materialLength] = '\0'; - SDL_strlwr(m_materialName); + MORTAR_strlwr(m_materialName); } return SUCCESS; diff --git a/LEGO1/modeldb/modeldb.cpp b/LEGO1/modeldb/modeldb.cpp index 919e8685..8a66611e 100644 --- a/LEGO1/modeldb/modeldb.cpp +++ b/LEGO1/modeldb/modeldb.cpp @@ -15,44 +15,44 @@ void ModelDbModel::Free() } // FUNCTION: LEGO1 0x100276b0 -MxResult ModelDbModel::Read(SDL_IOStream* p_file) +MxResult ModelDbModel::Read(MORTAR_IOStream* p_file) { MxU32 len; - if (SDL_ReadIO(p_file, &len, sizeof(MxU32)) != sizeof(MxU32)) { + if (MORTAR_ReadIO(p_file, &len, sizeof(MxU32)) != sizeof(MxU32)) { return FAILURE; } m_modelName = new char[len]; - if (SDL_ReadIO(p_file, m_modelName, len) != len) { + if (MORTAR_ReadIO(p_file, m_modelName, len) != len) { return FAILURE; } - if (SDL_ReadIO(p_file, &m_modelDataLength, sizeof(MxU32)) != sizeof(MxU32)) { + if (MORTAR_ReadIO(p_file, &m_modelDataLength, sizeof(MxU32)) != sizeof(MxU32)) { return FAILURE; } - if (SDL_ReadIO(p_file, &m_modelDataOffset, sizeof(MxU32)) != sizeof(MxU32)) { + if (MORTAR_ReadIO(p_file, &m_modelDataOffset, sizeof(MxU32)) != sizeof(MxU32)) { return FAILURE; } - if (SDL_ReadIO(p_file, &len, sizeof(len)) != sizeof(len)) { + if (MORTAR_ReadIO(p_file, &len, sizeof(len)) != sizeof(len)) { return FAILURE; } m_presenterName = new char[len]; - if (SDL_ReadIO(p_file, m_presenterName, len) != len) { + if (MORTAR_ReadIO(p_file, m_presenterName, len) != len) { return FAILURE; } - if (SDL_ReadIO(p_file, m_location, 3 * sizeof(float)) != 3 * sizeof(float)) { + if (MORTAR_ReadIO(p_file, m_location, 3 * sizeof(float)) != 3 * sizeof(float)) { return FAILURE; } - if (SDL_ReadIO(p_file, m_direction, 3 * sizeof(float)) != 3 * sizeof(float)) { + if (MORTAR_ReadIO(p_file, m_direction, 3 * sizeof(float)) != 3 * sizeof(float)) { return FAILURE; } - if (SDL_ReadIO(p_file, m_up, 3 * sizeof(float)) != 3 * sizeof(float)) { + if (MORTAR_ReadIO(p_file, m_up, 3 * sizeof(float)) != 3 * sizeof(float)) { return FAILURE; } - if (SDL_ReadIO(p_file, &m_visible, sizeof(MxU8)) != sizeof(MxU8)) { + if (MORTAR_ReadIO(p_file, &m_visible, sizeof(MxU8)) != sizeof(MxU8)) { return FAILURE; } @@ -60,27 +60,27 @@ MxResult ModelDbModel::Read(SDL_IOStream* p_file) } // FUNCTION: LEGO1 0x10027850 -MxResult ModelDbPart::Read(SDL_IOStream* p_file) +MxResult ModelDbPart::Read(MORTAR_IOStream* p_file) { MxU32 len; - if (SDL_ReadIO(p_file, &len, sizeof(MxU32)) != sizeof(MxU32)) { + if (MORTAR_ReadIO(p_file, &len, sizeof(MxU32)) != sizeof(MxU32)) { return FAILURE; } char* buff = new char[len]; - if (SDL_ReadIO(p_file, buff, len) != len) { + if (MORTAR_ReadIO(p_file, buff, len) != len) { return FAILURE; } m_roiName = buff; delete[] buff; - if (SDL_ReadIO(p_file, &m_partDataLength, sizeof(undefined4)) != sizeof(undefined4)) { + if (MORTAR_ReadIO(p_file, &m_partDataLength, sizeof(undefined4)) != sizeof(undefined4)) { return FAILURE; } - if (SDL_ReadIO(p_file, &m_partDataOffset, sizeof(undefined4)) != sizeof(undefined4)) { + if (MORTAR_ReadIO(p_file, &m_partDataOffset, sizeof(undefined4)) != sizeof(undefined4)) { return FAILURE; } @@ -88,13 +88,13 @@ MxResult ModelDbPart::Read(SDL_IOStream* p_file) } // FUNCTION: LEGO1 0x10027910 -MxResult ReadModelDbWorlds(SDL_IOStream* p_file, ModelDbWorld*& p_worlds, MxS32& p_numWorlds) +MxResult ReadModelDbWorlds(MORTAR_IOStream* p_file, ModelDbWorld*& p_worlds, MxS32& p_numWorlds) { p_worlds = NULL; p_numWorlds = 0; MxS32 numWorlds; - if (SDL_ReadIO(p_file, &numWorlds, sizeof(numWorlds)) != sizeof(numWorlds)) { + if (MORTAR_ReadIO(p_file, &numWorlds, sizeof(numWorlds)) != sizeof(numWorlds)) { return FAILURE; } @@ -102,16 +102,16 @@ MxResult ReadModelDbWorlds(SDL_IOStream* p_file, ModelDbWorld*& p_worlds, MxS32& MxS32 worldNameLen, numParts, i, j; for (i = 0; i < numWorlds; i++) { - if (SDL_ReadIO(p_file, &worldNameLen, sizeof(MxS32)) != sizeof(MxS32)) { + if (MORTAR_ReadIO(p_file, &worldNameLen, sizeof(MxS32)) != sizeof(MxS32)) { return FAILURE; } worlds[i].m_worldName = new char[worldNameLen]; - if (SDL_ReadIO(p_file, worlds[i].m_worldName, worldNameLen) != worldNameLen) { + if (MORTAR_ReadIO(p_file, worlds[i].m_worldName, worldNameLen) != worldNameLen) { return FAILURE; } - if (SDL_ReadIO(p_file, &numParts, sizeof(MxS32)) != sizeof(MxS32)) { + if (MORTAR_ReadIO(p_file, &numParts, sizeof(MxS32)) != sizeof(MxS32)) { return FAILURE; } @@ -127,7 +127,7 @@ MxResult ReadModelDbWorlds(SDL_IOStream* p_file, ModelDbWorld*& p_worlds, MxS32& worlds[i].m_partList->Append(part); } - if (SDL_ReadIO(p_file, &worlds[i].m_numModels, sizeof(MxS32)) != sizeof(MxS32)) { + if (MORTAR_ReadIO(p_file, &worlds[i].m_numModels, sizeof(MxS32)) != sizeof(MxS32)) { return FAILURE; } diff --git a/LEGO1/modeldb/modeldb.h b/LEGO1/modeldb/modeldb.h index 46bb8d2b..3656c7b3 100644 --- a/LEGO1/modeldb/modeldb.h +++ b/LEGO1/modeldb/modeldb.h @@ -6,12 +6,12 @@ #include "mxstring.h" #include "mxtypes.h" -#include -#include +#include +#include // SIZE 0x18 struct ModelDbPart { - MxResult Read(SDL_IOStream* p_file); + MxResult Read(MORTAR_IOStream* p_file); MxString m_roiName; // 0x00 undefined4 m_partDataLength; // 0x10 @@ -33,7 +33,7 @@ class ModelDbPartList : public MxList { // FUNCTION: LEGO1 0x10027c40 MxS8 Compare(ModelDbPart* p_a, ModelDbPart* p_b) override { - MxS32 compare = SDL_strcasecmp(p_a->m_roiName.GetData(), p_b->m_roiName.GetData()); + MxS32 compare = MORTAR_strcasecmp(p_a->m_roiName.GetData(), p_b->m_roiName.GetData()); if (compare == 0) { p_b->m_partDataLength = p_a->m_partDataLength; @@ -93,7 +93,7 @@ class ModelDbPartListCursor : public MxListCursor { // SIZE 0x38 struct ModelDbModel { void Free(); - MxResult Read(SDL_IOStream* p_file); + MxResult Read(MORTAR_IOStream* p_file); char* m_modelName; // 0x00 MxU32 m_modelDataLength; // 0x04 @@ -114,7 +114,7 @@ struct ModelDbWorld { undefined m_unk0x10[0x08]; // 0x10 }; -MxResult ReadModelDbWorlds(SDL_IOStream* p_file, ModelDbWorld*& p_worlds, MxS32& p_numWorlds); +MxResult ReadModelDbWorlds(MORTAR_IOStream* p_file, ModelDbWorld*& p_worlds, MxS32& p_numWorlds); void FreeModelDbWorlds(ModelDbWorld*& p_worlds, MxS32 p_numWorlds); #endif // MODELDB_H diff --git a/LEGO1/mxdirectx/legodxinfo.cpp b/LEGO1/mxdirectx/legodxinfo.cpp index ff404b90..f9cc7606 100644 --- a/LEGO1/mxdirectx/legodxinfo.cpp +++ b/LEGO1/mxdirectx/legodxinfo.cpp @@ -1,8 +1,8 @@ #include "legodxinfo.h" -#include -#include -#include // for vsprintf +#include +#include // for vsprintf +#include // File name validated by BETA10 0x1011cba3; directory unknown diff --git a/LEGO1/mxdirectx/mxdirect3d.cpp b/LEGO1/mxdirectx/mxdirect3d.cpp index d3ca4579..3c8d0332 100644 --- a/LEGO1/mxdirectx/mxdirect3d.cpp +++ b/LEGO1/mxdirectx/mxdirect3d.cpp @@ -5,9 +5,9 @@ #include "mxdirect3d.h" #include "mxvideoparam.h" -#include // for SDL_Log #include #include +#include DECOMP_SIZE_ASSERT(MxDirect3D, 0x894) @@ -72,11 +72,8 @@ BOOL MxDirect3D::Create( } if (m_pDirect3d->QueryInterface(IID_IDirect3DMiniwin, (void**) &miniwind3d) == DD_OK) { - MxVideoParam* videoParam = (MxVideoParam*) SDL_GetPointerProperty( - SDL_GetWindowProperties(reinterpret_cast(hWnd)), - ISLE_PROP_WINDOW_CREATE_VIDEO_PARAM, - nullptr - ); + MxVideoParam* videoParam = (MxVideoParam*) + MORTAR_EXT_GetWindowProperty(reinterpret_cast(hWnd), MORTAR_WINDOW_PROPERTY_USER, nullptr); #ifndef MXDIRECTX_FOR_CONFIG assert(videoParam); #endif @@ -199,12 +196,12 @@ BOOL MxDirect3D::D3DSetMode() ddBltFx.dwFillColor = 0xFF000000; if (backBuffer->Blt(NULL, NULL, NULL, DDBLT_WAIT | DDBLT_COLORFILL, &ddBltFx) != DD_OK) { - SDL_Log("MxDirect3D::D3DSetMode() color fill failed\n"); + MORTAR_Log("MxDirect3D::D3DSetMode() color fill failed\n"); } if (IsFullScreen()) { if (frontBuffer->Blt(NULL, NULL, NULL, DDBLT_WAIT | DDBLT_COLORFILL, &ddBltFx) != DD_OK) { - SDL_Log("MxDirect3D::D3DSetMode() front lock failed\n"); + MORTAR_Log("MxDirect3D::D3DSetMode() front lock failed\n"); } } diff --git a/LEGO1/mxdirectx/mxdirectdraw.cpp b/LEGO1/mxdirectx/mxdirectdraw.cpp index 7ccb78c2..a39ef411 100644 --- a/LEGO1/mxdirectx/mxdirectdraw.cpp +++ b/LEGO1/mxdirectx/mxdirectdraw.cpp @@ -2,8 +2,8 @@ #include "decomp.h" -#include -#include +#include +#include DECOMP_SIZE_ASSERT(MxDirectDraw, 0x880) @@ -733,7 +733,7 @@ void MxDirectDraw::Error(const char* p_message, int p_error) g_isInsideError = TRUE; Destroy(); - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "MxDirectDraw error: [0x%08x] %s", p_error, p_message); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "MxDirectDraw error: [0x%08x] %s", p_error, p_message); if (m_pErrorHandler) { m_pErrorHandler(p_message, p_error, m_pErrorHandlerArg); } diff --git a/LEGO1/mxdirectx/mxdirectxinfo.cpp b/LEGO1/mxdirectx/mxdirectxinfo.cpp index 03305124..225186ea 100644 --- a/LEGO1/mxdirectx/mxdirectxinfo.cpp +++ b/LEGO1/mxdirectx/mxdirectxinfo.cpp @@ -2,9 +2,9 @@ #include "omni/include/mxvideoparam.h" -#include #include #include +#include #include // for vsprintf DECOMP_SIZE_ASSERT(MxAssignedDevice, 0xe4) @@ -228,9 +228,9 @@ BOOL MxDeviceEnumerate::EnumDirectDrawCallback(LPGUID p_guid, LPSTR p_driverDesc result = lpDD->QueryInterface(IID_IDirect3DMiniwin, (void**) &miniwind3d); if (result == DD_OK) { - MxVideoParam* videoParam = (MxVideoParam*) SDL_GetPointerProperty( - SDL_GetWindowProperties(reinterpret_cast(m_hWnd)), - ISLE_PROP_WINDOW_CREATE_VIDEO_PARAM, + MxVideoParam* videoParam = (MxVideoParam*) MORTAR_EXT_GetWindowProperty( + reinterpret_cast(m_hWnd), + MORTAR_WINDOW_PROPERTY_USER, nullptr ); #ifndef MXDIRECTX_FOR_CONFIG @@ -298,7 +298,7 @@ void MxDeviceEnumerate::BuildErrorString(const char* p_format, ...) va_list args; va_start(args, p_format); - SDL_LogMessageV(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_ERROR, p_format, args); + MORTAR_LogMessageV(MORTAR_LOG_CATEGORY_APPLICATION, MORTAR_LOG_PRIORITY_ERROR, p_format, args); va_end(args); } diff --git a/LEGO1/mxdirectx/mxstopwatch.h b/LEGO1/mxdirectx/mxstopwatch.h index 03a34c27..02db3fea 100644 --- a/LEGO1/mxdirectx/mxstopwatch.h +++ b/LEGO1/mxdirectx/mxstopwatch.h @@ -3,10 +3,10 @@ #include "assert.h" -#include -#include #include // ULONG_MAX #include +#include +#include #ifdef MINIWIN #include "miniwin/windows.h" #else @@ -35,35 +35,35 @@ class MxStopWatch { double ElapsedSeconds() const; protected: - Uint64 TicksPerSeconds() const; + uint64_t TicksPerSeconds() const; private: - Uint64 m_startTick; // 0x00 + uint64_t m_startTick; // 0x00 // ??? when we provide LARGE_INTEGER arithmetic, use a // LARGE_INTEGER m_elapsedTicks rather than m_elapsedSeconds - double m_elapsedSeconds; // 0x0c - Uint64 m_ticksPerSeconds; // 0x14 + double m_elapsedSeconds; // 0x0c + uint64_t m_ticksPerSeconds; // 0x14 }; // FUNCTION: BETA10 0x100d8ba0 inline MxStopWatch::MxStopWatch() { Reset(); - m_ticksPerSeconds = SDL_GetPerformanceFrequency(); + m_ticksPerSeconds = MORTAR_GetPerformanceFrequency(); } // FUNCTION: BETA10 0x100d8be0 inline void MxStopWatch::Start() { - m_startTick = SDL_GetPerformanceCounter(); + m_startTick = MORTAR_GetPerformanceCounter(); } // FUNCTION: BETA10 0x100d8f50 inline void MxStopWatch::Stop() { - Uint64 endTick; + uint64_t endTick; - endTick = SDL_GetPerformanceCounter(); + endTick = MORTAR_GetPerformanceCounter(); m_elapsedSeconds = (double) (endTick - m_startTick) / (double) m_ticksPerSeconds; } @@ -76,11 +76,11 @@ inline void MxStopWatch::Reset() } // FUNCTION: BETA10 0x100d8c60 -inline Uint64 MxStopWatch::TicksPerSeconds() const +inline uint64_t MxStopWatch::TicksPerSeconds() const { - Uint64 ticksPerSeconds; + uint64_t ticksPerSeconds; - ticksPerSeconds = SDL_GetPerformanceFrequency(); + ticksPerSeconds = MORTAR_GetPerformanceFrequency(); assert(ticksPerSeconds); return ticksPerSeconds; diff --git a/LEGO1/omni/include/mxbitmap.h b/LEGO1/omni/include/mxbitmap.h index dd437cbb..ff8beab5 100644 --- a/LEGO1/omni/include/mxbitmap.h +++ b/LEGO1/omni/include/mxbitmap.h @@ -4,7 +4,7 @@ #include "mxcore.h" #include "mxtypes.h" -#include +#include #ifdef MINIWIN #include "miniwin/ddraw.h" #else @@ -48,7 +48,7 @@ class MxBitmap : public MxCore { virtual MxResult ImportBitmap(MxBitmap* p_bitmap); // vtable+0x14 virtual MxResult ImportBitmapInfo(MxBITMAPINFO* p_info); // vtable+0x18 virtual MxResult SetSize(MxS32 p_width, MxS32 p_height, MxPalette* p_palette, MxBool); // vtable+0x1c - virtual MxResult LoadFile(SDL_IOStream* p_handle); // vtable+0x20 + virtual MxResult LoadFile(MORTAR_IOStream* p_handle); // vtable+0x20 virtual MxLong Read(const char* p_filename); // vtable+0x24 // FUNCTION: LEGO1 0x1004e0d0 diff --git a/LEGO1/omni/include/mxcriticalsection.h b/LEGO1/omni/include/mxcriticalsection.h index 81767fd9..b075add9 100644 --- a/LEGO1/omni/include/mxcriticalsection.h +++ b/LEGO1/omni/include/mxcriticalsection.h @@ -1,7 +1,7 @@ #ifndef MXCRITICALSECTION_H #define MXCRITICALSECTION_H -#include +#include // SIZE 0x1c class MxCriticalSection { @@ -23,7 +23,7 @@ class MxCriticalSection { // SDL uses the most efficient mutex implementation available on the target platform. // Originally this class allowed working with either a Win32 CriticalSection or Mutex, // but only CriticalSection was ever used and we don't need both anyway. - SDL_Mutex* m_mutex; + MORTAR_Mutex* m_mutex; }; #ifdef BETA10 diff --git a/LEGO1/omni/include/mxdsfile.h b/LEGO1/omni/include/mxdsfile.h index 6bb537e9..3999ffaf 100644 --- a/LEGO1/omni/include/mxdsfile.h +++ b/LEGO1/omni/include/mxdsfile.h @@ -46,14 +46,14 @@ class MxDSFile : public MxDSSource { MxResult Open(MxULong) override; // vtable+0x14 MxResult Close() override; // vtable+0x18 MxResult Read(unsigned char*, MxULong) override; // vtable+0x20 - MxResult Seek(MxLong, SDL_IOWhence) override; // vtable+0x24 + MxResult Seek(MxLong, MORTAR_IOWhence) override; // vtable+0x24 MxULong GetBufferSize() override; // vtable+0x28 MxULong GetStreamBuffersNum() override; // vtable+0x2c // FUNCTION: BETA10 0x1015e110 void SetFileName(const char* p_filename) { m_filename = p_filename; } - MxS32 CalcFileSize() { return SDL_GetIOSize(m_io.m_file); } + MxS32 CalcFileSize() { return MORTAR_GetIOSize(m_io.m_file); } // SYNTHETIC: LEGO1 0x100c01e0 // SYNTHETIC: BETA10 0x10148e40 diff --git a/LEGO1/omni/include/mxdssource.h b/LEGO1/omni/include/mxdssource.h index d559a790..ad12e75b 100644 --- a/LEGO1/omni/include/mxdssource.h +++ b/LEGO1/omni/include/mxdssource.h @@ -4,7 +4,7 @@ #include "mxcore.h" #include "mxdsbuffer.h" -#include +#include // VTABLE: LEGO1 0x100dc8c8 // VTABLE: BETA10 0x101c2450 @@ -40,7 +40,7 @@ class MxDSSource : public MxCore { } // vtable+0x1c virtual MxResult Read(unsigned char*, MxULong) = 0; // vtable+0x20 - virtual MxLong Seek(MxLong, SDL_IOWhence) = 0; // vtable+0x24 + virtual MxLong Seek(MxLong, MORTAR_IOWhence) = 0; // vtable+0x24 virtual MxULong GetBufferSize() = 0; // vtable+0x28 virtual MxULong GetStreamBuffersNum() = 0; // vtable+0x2c diff --git a/LEGO1/omni/include/mxio.h b/LEGO1/omni/include/mxio.h index 5868c9ba..22d767f1 100644 --- a/LEGO1/omni/include/mxio.h +++ b/LEGO1/omni/include/mxio.h @@ -3,7 +3,7 @@ #include "mxtypes.h" -#include +#include // [library:filesystem] // We define the bare minimum constants and structures to be compatible with the code in mxio.cpp @@ -53,15 +53,15 @@ typedef struct _ISLE_MMIOINFO { MxU32 dwFlags; /* general status flags */ /* fields maintained by MMIO functions during buffered I/O */ - Sint64 cchBuffer; /* size of I/O buffer (or 0L) */ - char* pchBuffer; /* start of I/O buffer (or NULL) */ - char* pchNext; /* pointer to next byte to read/write */ - char* pchEndRead; /* pointer to last valid byte to read */ - char* pchEndWrite; /* pointer to last byte to write */ - Sint64 lBufOffset; /* disk offset of start of buffer */ + int64_t cchBuffer; /* size of I/O buffer (or 0L) */ + char* pchBuffer; /* start of I/O buffer (or NULL) */ + char* pchNext; /* pointer to next byte to read/write */ + char* pchEndRead; /* pointer to last valid byte to read */ + char* pchEndWrite; /* pointer to last byte to write */ + int64_t lBufOffset; /* disk offset of start of buffer */ /* fields maintained by I/O procedure */ - Sint64 lDiskOffset; /* disk offset of next read or write */ + int64_t lDiskOffset; /* disk offset of next read or write */ } ISLE_MMIOINFO; /* RIFF chunk information data structure */ @@ -83,7 +83,7 @@ class MXIOINFO { MxU16 Close(MxLong); MxLong Read(void*, MxLong); MxLong Write(void*, MxLong); - MxLong Seek(MxLong, SDL_IOWhence); + MxLong Seek(MxLong, MORTAR_IOWhence); MxU16 SetBuffer(char*, MxLong, MxLong); MxU16 Flush(MxU16); MxU16 Advance(MxU16); @@ -95,7 +95,7 @@ class MXIOINFO { // an HFILE (int) instead of an HMMIO (WORD). ISLE_MMIOINFO m_info; // [library:filesystem] This handle is always used instead of the `hmmio` member in m_info. - SDL_IOStream* m_file; + MORTAR_IOStream* m_file; }; #endif // MXIO_H diff --git a/LEGO1/omni/include/mxmain.h b/LEGO1/omni/include/mxmain.h index c9d20482..ab6848c0 100644 --- a/LEGO1/omni/include/mxmain.h +++ b/LEGO1/omni/include/mxmain.h @@ -7,7 +7,7 @@ #include "mxstl/stlcompat.h" #include "mxstring.h" -#include +#include #ifdef MINIWIN #include "miniwin/windows.h" #else diff --git a/LEGO1/omni/include/mxomnicreateparam.h b/LEGO1/omni/include/mxomnicreateparam.h index f92b089b..31eda2dc 100644 --- a/LEGO1/omni/include/mxomnicreateparam.h +++ b/LEGO1/omni/include/mxomnicreateparam.h @@ -7,7 +7,7 @@ #include "mxstring.h" #include "mxvideoparam.h" -#include +#include // VTABLE: LEGO1 0x100dc218 // VTABLE: BETA10 0x101c1ca8 diff --git a/LEGO1/omni/include/mxpresenter.h b/LEGO1/omni/include/mxpresenter.h index c3b7a216..be4fc0a6 100644 --- a/LEGO1/omni/include/mxpresenter.h +++ b/LEGO1/omni/include/mxpresenter.h @@ -7,7 +7,7 @@ #include "mxgeometry.h" #include "mxutilities.h" -#include +#include class MxCompositePresenter; class MxDSAction; @@ -66,11 +66,12 @@ class MxPresenter : public MxCore { m_previousTickleStates |= 1 << (MxU8) m_currentTickleState; m_currentTickleState = p_tickleState; - SDL_Event event; + MORTAR_Event event; + MORTAR_memset(&event, 0, sizeof(event)); event.user.type = g_legoSdlEvents.m_presenterProgress; event.user.code = m_currentTickleState; event.user.data1 = (void*) m_action; - SDL_PushEvent(&event); + MORTAR_PushEvent(&event); } public: diff --git a/LEGO1/omni/include/mxsemaphore.h b/LEGO1/omni/include/mxsemaphore.h index fd8b60b0..6d932a1c 100644 --- a/LEGO1/omni/include/mxsemaphore.h +++ b/LEGO1/omni/include/mxsemaphore.h @@ -3,7 +3,7 @@ #include "mxtypes.h" -#include +#include // VTABLE: LEGO1 0x100dccf0 // VTABLE: BETA10 0x101c28ac @@ -14,7 +14,7 @@ class MxSemaphore { // FUNCTION: LEGO1 0x100c87e0 // FUNCTION: BETA10 0x101592a9 - ~MxSemaphore() { SDL_DestroySemaphore(m_semaphore); } + ~MxSemaphore() { MORTAR_DestroySemaphore(m_semaphore); } virtual MxResult Init(MxU32 p_initialCount, MxU32 p_maxCount); @@ -23,7 +23,7 @@ class MxSemaphore { void Release(); private: - SDL_Semaphore* m_semaphore; + MORTAR_Semaphore* m_semaphore; }; #endif // MXSEMAPHORE_H diff --git a/LEGO1/omni/include/mxsoundmanager.h b/LEGO1/omni/include/mxsoundmanager.h index 569a7ff1..3f4a6a59 100644 --- a/LEGO1/omni/include/mxsoundmanager.h +++ b/LEGO1/omni/include/mxsoundmanager.h @@ -6,7 +6,7 @@ #include "mxaudiomanager.h" #include "mxminiaudio.h" -#include +#include // VTABLE: LEGO1 0x100dc128 // VTABLE: BETA10 0x101c1ce8 @@ -43,13 +43,13 @@ class MxSoundManager : public MxAudioManager { static void AudioStreamCallback( void* p_userdata, - SDL_AudioStream* p_stream, + MORTAR_AudioStream* p_stream, int p_additionalAmount, int p_totalAmount ); MxMiniaudio m_engine; - SDL_AudioStream* m_stream; + MORTAR_AudioStream* m_stream; undefined m_unk0x38[4]; }; diff --git a/LEGO1/omni/include/mxthread.h b/LEGO1/omni/include/mxthread.h index 0772dc65..945a79a5 100644 --- a/LEGO1/omni/include/mxthread.h +++ b/LEGO1/omni/include/mxthread.h @@ -5,7 +5,7 @@ #include "mxsemaphore.h" #include "mxtypes.h" -#include +#include class MxCore; @@ -41,9 +41,9 @@ class MxThread { virtual ~MxThread(); private: - static int SDLCALL ThreadProc(void* p_thread); + static int ThreadProc(void* p_thread); - SDL_Thread* m_thread; + MORTAR_Thread* m_thread; MxBool m_running; // 0x0c MxSemaphore m_semaphore; // 0x10 diff --git a/LEGO1/omni/include/mxtimer.h b/LEGO1/omni/include/mxtimer.h index f345cad3..e318c710 100644 --- a/LEGO1/omni/include/mxtimer.h +++ b/LEGO1/omni/include/mxtimer.h @@ -4,7 +4,7 @@ #include "lego1_export.h" #include "mxcore.h" -#include +#include // VTABLE: LEGO1 0x100dc0e0 // VTABLE: BETA10 0x101c1bb0 @@ -38,8 +38,8 @@ class MxTimer : public MxCore { // MxTimer::`scalar deleting destructor' private: - Uint64 m_startTime; // 0x08 - MxBool m_isRunning; // 0x0c + uint64_t m_startTime; // 0x08 + MxBool m_isRunning; // 0x0c static MxLong g_lastTimeCalculated; static MxLong g_lastTimeTimerStarted; diff --git a/LEGO1/omni/include/mxutilities.h b/LEGO1/omni/include/mxutilities.h index 7ea9fed5..51ce7592 100644 --- a/LEGO1/omni/include/mxutilities.h +++ b/LEGO1/omni/include/mxutilities.h @@ -4,13 +4,13 @@ #include "lego1_export.h" #include "mxtypes.h" -#include -#include +#include +#include struct LegoSdlEvents { - Uint32 m_windowsMessage; - Uint32 m_presenterProgress; - Uint32 m_gameEvent; + uint32_t m_windowsMessage; + uint32_t m_presenterProgress; + uint32_t m_gameEvent; }; LEGO1_EXPORT extern LegoSdlEvents g_legoSdlEvents; diff --git a/LEGO1/omni/include/mxvideoparam.h b/LEGO1/omni/include/mxvideoparam.h index cd425ba9..523eb6ab 100644 --- a/LEGO1/omni/include/mxvideoparam.h +++ b/LEGO1/omni/include/mxvideoparam.h @@ -15,8 +15,6 @@ class MxPalette; -#define ISLE_PROP_WINDOW_CREATE_VIDEO_PARAM "ISLE.window.create.videoParam" - // SIZE 0x24 class MxVideoParam { public: diff --git a/LEGO1/omni/src/action/mxdsobject.cpp b/LEGO1/omni/src/action/mxdsobject.cpp index 25a2a846..7dded874 100644 --- a/LEGO1/omni/src/action/mxdsobject.cpp +++ b/LEGO1/omni/src/action/mxdsobject.cpp @@ -268,7 +268,7 @@ MxDSObject* CreateStreamObject(MxDSFile* p_file, MxS16 p_ofs) MxU8* buf; ISLE_MMCKINFO tmpChunk; - if (p_file->Seek(((MxLong*) p_file->GetBuffer())[p_ofs], SDL_IO_SEEK_SET)) { + if (p_file->Seek(((MxLong*) p_file->GetBuffer())[p_ofs], MORTAR_IO_SEEK_SET)) { return NULL; } diff --git a/LEGO1/omni/src/action/mxdsselectaction.cpp b/LEGO1/omni/src/action/mxdsselectaction.cpp index 33d88a72..b1c48790 100644 --- a/LEGO1/omni/src/action/mxdsselectaction.cpp +++ b/LEGO1/omni/src/action/mxdsselectaction.cpp @@ -5,7 +5,7 @@ #include "mxutilities.h" #include "mxvariabletable.h" -#include +#include DECOMP_SIZE_ASSERT(MxDSSelectAction, 0xb0) DECOMP_SIZE_ASSERT(MxStringList, 0x18) @@ -106,7 +106,7 @@ void MxDSSelectAction::Deserialize(MxU8*& p_source, MxS16 p_flags) m_unk0x9c = (char*) p_source; - if (SDL_strncasecmp(m_unk0x9c.GetData(), "RANDOM_", strlen("RANDOM_")) != 0) { + if (MORTAR_strncasecmp(m_unk0x9c.GetData(), "RANDOM_", strlen("RANDOM_")) != 0) { string = VariableTable()->GetVariable((char*) p_source); } else { @@ -114,8 +114,8 @@ void MxDSSelectAction::Deserialize(MxU8*& p_source, MxS16 p_flags) MxS16 value = atoi(&m_unk0x9c.GetData()[strlen("RANDOM_")]); srand(Timer()->GetTime()); - MxS32 random = SDL_rand(value); - string = SDL_itoa((MxS16) random, buffer, 10); + MxS32 random = MORTAR_rand(value); + string = MORTAR_itoa((MxS16) random, buffer, 10); } p_source += strlen((char*) p_source) + 1; diff --git a/LEGO1/omni/src/audio/mxsoundmanager.cpp b/LEGO1/omni/src/audio/mxsoundmanager.cpp index 1b222bc1..e3f8b59e 100644 --- a/LEGO1/omni/src/audio/mxsoundmanager.cpp +++ b/LEGO1/omni/src/audio/mxsoundmanager.cpp @@ -9,7 +9,7 @@ #include "mxticklethread.h" #include "mxwavepresenter.h" -#include +#include DECOMP_SIZE_ASSERT(MxSoundManager, 0x3c); @@ -42,7 +42,7 @@ MxSoundManager::~MxSoundManager() // FUNCTION: BETA10 0x10132d59 void MxSoundManager::Init() { - SDL_zero(m_engine); + MORTAR_zero(m_engine); m_stream = NULL; } @@ -61,7 +61,7 @@ void MxSoundManager::Destroy(MxBool p_fromDestructor) ENTER(m_criticalSection); if (m_stream) { - SDL_DestroyAudioStream(m_stream); + MORTAR_DestroyAudioStream(m_stream); } m_engine.Destroy(ma_engine_uninit); @@ -98,21 +98,20 @@ MxResult MxSoundManager::Create(MxU32 p_frequencyMS, MxBool p_createThread) goto done; } - SDL_AudioSpec spec; - SDL_zero(spec); + MORTAR_AudioSpec spec; + MORTAR_zero(spec); spec.freq = ma_engine_get_sample_rate(m_engine); - spec.format = SDL_AUDIO_F32; + spec.format = MORTAR_AUDIO_F32; spec.channels = ma_engine_get_channels(m_engine); - if ((m_stream = SDL_OpenAudioDeviceStream(SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, &spec, &AudioStreamCallback, this)) != - NULL) { - SDL_ResumeAudioDevice(SDL_GetAudioStreamDevice(m_stream)); + if ((m_stream = MORTAR_EX_OpenAudioPlaybackDevice(&spec, &AudioStreamCallback, this)) != NULL) { + MORTAR_EX_ResumeAudioDevice(m_stream); } else { - SDL_LogError( - SDL_LOG_CATEGORY_APPLICATION, + MORTAR_LogError( + MORTAR_LOG_CATEGORY_APPLICATION, "Failed to open default audio device for playback: %s", - SDL_GetError() + MORTAR_GetError() ); } @@ -142,7 +141,7 @@ MxResult MxSoundManager::Create(MxU32 p_frequencyMS, MxBool p_createThread) void MxSoundManager::AudioStreamCallback( void* p_userdata, - SDL_AudioStream* p_stream, + MORTAR_AudioStream* p_stream, int p_additionalAmount, int p_totalAmount ) @@ -158,7 +157,7 @@ void MxSoundManager::AudioStreamCallback( ma_uint64 framesRead; if (ma_engine_read_pcm_frames(manager->m_engine, g_buffer.data(), bufferSizeInFrames, &framesRead) == MA_SUCCESS) { - SDL_PutAudioStreamData(manager->m_stream, g_buffer.data(), framesRead * bytesPerFrame); + MORTAR_PutAudioStreamData(manager->m_stream, g_buffer.data(), framesRead * bytesPerFrame); } } diff --git a/LEGO1/omni/src/audio/mxwavepresenter.cpp b/LEGO1/omni/src/audio/mxwavepresenter.cpp index 83e1f7c7..1348e0e8 100644 --- a/LEGO1/omni/src/audio/mxwavepresenter.cpp +++ b/LEGO1/omni/src/audio/mxwavepresenter.cpp @@ -10,8 +10,8 @@ #include "mxsoundmanager.h" #include "mxutilities.h" -#include #include +#include DECOMP_SIZE_ASSERT(MxWavePresenter, 0x6c); DECOMP_SIZE_ASSERT(MxWavePresenter::WaveFormat, 0x18); @@ -20,9 +20,9 @@ DECOMP_SIZE_ASSERT(MxWavePresenter::WaveFormat, 0x18); void MxWavePresenter::Init() { m_waveFormat = NULL; - SDL_zero(m_rb); - SDL_zero(m_ab); - SDL_zero(m_sound); + MORTAR_zero(m_rb); + MORTAR_zero(m_ab); + MORTAR_zero(m_sound); m_chunkLength = 0; m_started = FALSE; m_is3d = FALSE; @@ -332,7 +332,7 @@ void MxWavePresenter::ParseExtra() char soundValue[512]; if (KeyValueStringParse(soundValue, g_strSOUND, extraCopy)) { - if (!SDL_strcasecmp(soundValue, "FALSE")) { + if (!MORTAR_strcasecmp(soundValue, "FALSE")) { Enable(FALSE); } } diff --git a/LEGO1/omni/src/common/mxdebug.cpp b/LEGO1/omni/src/common/mxdebug.cpp index edb7865f..784171a1 100644 --- a/LEGO1/omni/src/common/mxdebug.cpp +++ b/LEGO1/omni/src/common/mxdebug.cpp @@ -6,7 +6,7 @@ // Identical functions at BETA10 0x100ec9fe and 0x101741b5 are more limited in scope. // This is the most widely used version. -#include +#include #include // FUNCTION: BETA10 0x10124cb9 @@ -21,7 +21,7 @@ void _MxTrace(const char* format, ...) va_list args; va_start(args, format); - SDL_LogMessageV(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_TRACE, format, args); + MORTAR_LogMessageV(MORTAR_LOG_CATEGORY_APPLICATION, MORTAR_LOG_PRIORITY_TRACE, format, args); va_end(args); } diff --git a/LEGO1/omni/src/common/mxstring.cpp b/LEGO1/omni/src/common/mxstring.cpp index fc63d70b..3f1cb236 100644 --- a/LEGO1/omni/src/common/mxstring.cpp +++ b/LEGO1/omni/src/common/mxstring.cpp @@ -3,9 +3,8 @@ #include "decomp.h" #include "mxmain.h" -#include -#include -#include +#include +#include #include #include @@ -93,14 +92,14 @@ void MxString::Reverse() // FUNCTION: BETA10 0x1012c537 void MxString::ToUpperCase() { - SDL_strupr(this->m_data); + MORTAR_strupr(this->m_data); } // FUNCTION: LEGO1 0x100ae4a0 // FUNCTION: BETA10 0x1012c55c void MxString::ToLowerCase() { - SDL_strlwr(this->m_data); + MORTAR_strlwr(this->m_data); } // FUNCTION: LEGO1 0x100ae4b0 @@ -195,7 +194,7 @@ void MxString::MapPathToFilesystem(char* p_path) // [library:filesystem] // This function is used to map an internal Windows-style path (found in SI files or in the code) // to an actual file on disk or CD. We have to account for both Windows path separators and case. -#if !defined(SDL_PLATFORM_WINDOWS) +#if !defined(_WIN32) char* path = p_path; while (*path) { if (*path == '\\') { @@ -205,18 +204,18 @@ void MxString::MapPathToFilesystem(char* p_path) path++; } - size_t pathLen = SDL_strlen(p_path); + size_t pathLen = MORTAR_strlen(p_path); auto mapPath = [p_path, pathLen](const vector& p_files) -> bool { for (const MxString& file : p_files) { // Test whether file is a suffix of the provided path (case insensitive) // If yes, copy the original file system path into p_path. for (size_t i = pathLen, j = file.GetLength(); i != 0 && j != 0; i--, j--) { - if (SDL_tolower(p_path[i - 1]) != SDL_tolower(file.GetData()[j - 1])) { + if (MORTAR_tolower(p_path[i - 1]) != MORTAR_tolower(file.GetData()[j - 1])) { break; } else if (j == 1) { - SDL_strlcpy(&p_path[i - 1], file.GetData(), file.GetLength() + 1); + MORTAR_strlcpy(&p_path[i - 1], file.GetData(), file.GetLength() + 1); return true; } } diff --git a/LEGO1/omni/src/common/mxtimer.cpp b/LEGO1/omni/src/common/mxtimer.cpp index 5a318c54..4ce0d07a 100644 --- a/LEGO1/omni/src/common/mxtimer.cpp +++ b/LEGO1/omni/src/common/mxtimer.cpp @@ -1,6 +1,6 @@ #include "mxtimer.h" -#include +#include // GLOBAL: LEGO1 0x10101414 // GLOBAL: BETA10 0x10201f84 @@ -14,7 +14,7 @@ MxLong MxTimer::g_lastTimeTimerStarted = 0; MxTimer::MxTimer() { m_isRunning = FALSE; - m_startTime = SDL_GetTicks(); + m_startTime = MORTAR_GetTicks(); InitLastTimeCalculated(); } @@ -22,7 +22,7 @@ MxTimer::MxTimer() // FUNCTION: BETA10 0x1012bf23 MxLong MxTimer::GetRealTime() { - MxTimer::g_lastTimeCalculated = SDL_GetTicks(); + MxTimer::g_lastTimeCalculated = MORTAR_GetTicks(); return MxTimer::g_lastTimeCalculated - m_startTime; } diff --git a/LEGO1/omni/src/common/mxutilities.cpp b/LEGO1/omni/src/common/mxutilities.cpp index 5d7528fa..b0c30567 100644 --- a/LEGO1/omni/src/common/mxutilities.cpp +++ b/LEGO1/omni/src/common/mxutilities.cpp @@ -9,8 +9,8 @@ #include "mxgeometry.h" #include "mxpresenterlist.h" -#include #include +#include LegoSdlEvents g_legoSdlEvents; @@ -75,7 +75,7 @@ void MakeSourceName(char* p_output, const char* p_input) strcpy(p_output, p_input); - SDL_strlwr(p_output); + MORTAR_strlwr(p_output); char* extLoc = strstr(p_output, ".si"); if (extLoc) { @@ -100,7 +100,7 @@ MxBool KeyValueStringParse(char* p_output, const char* p_command, const char* p_ for (char* token = strtok(string, delim); token; token = strtok(NULL, delim)) { len -= (strlen(token) + 1); - if (SDL_strcasecmp(token, p_command) == 0) { + if (MORTAR_strcasecmp(token, p_command) == 0) { if (p_output && len > 0) { char* output = p_output; char* cur = &token[strlen(p_command)]; diff --git a/LEGO1/omni/src/main/mxmain.cpp b/LEGO1/omni/src/main/mxmain.cpp index dc146927..8876c67c 100644 --- a/LEGO1/omni/src/main/mxmain.cpp +++ b/LEGO1/omni/src/main/mxmain.cpp @@ -17,8 +17,8 @@ #include "mxvariabletable.h" #include "mxvideomanager.h" -#include -#include +#include +#include // GLOBAL: LEGO1 0x101015b8 MxString g_hdPath = ""; @@ -167,7 +167,7 @@ MxResult MxOmni::Create(MxOmniCreateParam& p_param) } { - Uint32 event = SDL_RegisterEvents(3); + uint32_t event = MORTAR_RegisterEvents(3); g_legoSdlEvents.m_windowsMessage = event + 0; g_legoSdlEvents.m_presenterProgress = event + 1; g_legoSdlEvents.m_gameEvent = event + 2; @@ -443,22 +443,22 @@ void MxOmni::Resume() vector MxOmni::GlobIsleFiles(const MxString& p_path) { int count; - char** files = SDL_GlobDirectory(p_path.GetData(), NULL, 0, &count); + char** files = MORTAR_GlobDirectory(p_path.GetData(), NULL, &count); vector result; if (files == NULL) { - SDL_Log("Error enumerating files for path %s (%s)", p_path.GetData(), SDL_GetError()); + MORTAR_Log("Error enumerating files for path %s (%s)", p_path.GetData(), MORTAR_GetError()); return result; } for (int i = 0; i < count; i++) { - if (!SDL_strncasecmp(files[i], "lego", 4)) { + if (!MORTAR_strncasecmp(files[i], "lego", 4)) { result.emplace_back(files[i]); } } - SDL_Log("Found %d game files in %s", count, p_path.GetData()); + MORTAR_Log("Found %d game files in %s", count, p_path.GetData()); - SDL_free(files); + MORTAR_free(files); return result; } diff --git a/LEGO1/omni/src/stream/mxdiskstreamprovider.cpp b/LEGO1/omni/src/stream/mxdiskstreamprovider.cpp index 1f3b7d36..af50d4a9 100644 --- a/LEGO1/omni/src/stream/mxdiskstreamprovider.cpp +++ b/LEGO1/omni/src/stream/mxdiskstreamprovider.cpp @@ -246,7 +246,7 @@ void MxDiskStreamProvider::PerformWork() buffer = ((MxDSStreamingAction*) streamingAction)->GetUnknowna0(); if (m_pFile->GetPosition() == ((MxDSStreamingAction*) streamingAction)->GetBufferOffset() || - m_pFile->Seek(((MxDSStreamingAction*) streamingAction)->GetBufferOffset(), SDL_IO_SEEK_SET) == 0) { + m_pFile->Seek(((MxDSStreamingAction*) streamingAction)->GetBufferOffset(), MORTAR_IO_SEEK_SET) == 0) { buffer->SetUnknown14(m_pFile->GetPosition()); if (m_pFile->ReadToBuffer(buffer) == SUCCESS) { diff --git a/LEGO1/omni/src/stream/mxdsfile.cpp b/LEGO1/omni/src/stream/mxdsfile.cpp index d083b103..4af3b79d 100644 --- a/LEGO1/omni/src/stream/mxdsfile.cpp +++ b/LEGO1/omni/src/stream/mxdsfile.cpp @@ -3,7 +3,7 @@ #include "decomp.h" #include "mxdebug.h" -#include +#include #include #define SI_MAJOR_VERSION 2 @@ -43,7 +43,7 @@ MxResult MxDSFile::Open(MxULong p_uStyle) Close(); } else { - Seek(0, SDL_IO_SEEK_SET); + Seek(0, MORTAR_IO_SEEK_SET); } return result; @@ -72,7 +72,7 @@ MxResult MxDSFile::ReadChunks() m_io.Read(&m_header, 0x0c); if ((m_header.m_majorVersion != SI_MAJOR_VERSION) || (m_header.m_minorVersion != SI_MINOR_VERSION)) { sprintf(tempBuffer, "Wrong SI file version. %d.%d expected.", SI_MAJOR_VERSION, SI_MINOR_VERSION); - SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "LEGO® Island Error", tempBuffer, NULL); + MORTAR_ShowSimpleMessageBox(MORTAR_MESSAGEBOX_ERROR, "LEGO® Island Error", tempBuffer, NULL); return FAILURE; } @@ -118,7 +118,7 @@ MxResult MxDSFile::Read(unsigned char* p_buf, MxULong p_nbytes) // FUNCTION: LEGO1 0x100cc7b0 // FUNCTION: BETA10 0x1015dfee -MxResult MxDSFile::Seek(MxLong p_lOffset, SDL_IOWhence p_iOrigin) +MxResult MxDSFile::Seek(MxLong p_lOffset, MORTAR_IOWhence p_iOrigin) { m_position = m_io.Seek(p_lOffset, p_iOrigin); if (m_position == -1) { diff --git a/LEGO1/omni/src/stream/mxio.cpp b/LEGO1/omni/src/stream/mxio.cpp index 87cdaf8b..a6d66a85 100644 --- a/LEGO1/omni/src/stream/mxio.cpp +++ b/LEGO1/omni/src/stream/mxio.cpp @@ -42,14 +42,14 @@ MxU16 MXIOINFO::Open(const char* p_filename, MxULong p_flags) MxString path(p_filename); path.MapPathToFilesystem(); - ASSIGN_M_FILE(SDL_IOFromFile(path.GetData(), "rb")); + ASSIGN_M_FILE(MORTAR_IOFromFile(path.GetData(), "rb")); if (M_FILE != NULL) { m_info.dwFlags = p_flags; if (m_info.dwFlags & MMIO_ALLOCBUF) { // Default buffer length of 8k if none specified - Sint64 len = m_info.cchBuffer; + int64_t len = m_info.cchBuffer; if (len == 0) { len = 8192; } @@ -86,7 +86,7 @@ MxU16 MXIOINFO::Close(MxLong p_unused) if (RAW_M_FILE) { result = Flush(0); - SDL_CloseIO(M_FILE); + MORTAR_CloseIO(M_FILE); ASSIGN_M_FILE(0); if (m_info.dwFlags & MMIO_ALLOCBUF) { @@ -104,11 +104,11 @@ MxU16 MXIOINFO::Close(MxLong p_unused) // FUNCTION: BETA10 0x1015e3b2 MxLong MXIOINFO::Read(void* p_buf, MxLong p_len) { - Sint64 bytesRead = 0; + int64_t bytesRead = 0; if (m_info.pchBuffer) { - Sint64 bytesLeft = m_info.pchEndRead - m_info.pchNext; + int64_t bytesLeft = m_info.pchEndRead - m_info.pchNext; while (p_len > 0) { if (bytesLeft > 0) { @@ -137,11 +137,11 @@ MxLong MXIOINFO::Read(void* p_buf, MxLong p_len) } } else if (RAW_M_FILE && p_len > 0) { - bytesRead = SDL_ReadIO(M_FILE, p_buf, p_len); + bytesRead = MORTAR_ReadIO(M_FILE, p_buf, p_len); - if (SDL_GetIOStatus(M_FILE) == SDL_IO_STATUS_ERROR) { + if (MORTAR_GetIOStatus(M_FILE) == MORTAR_IO_STATUS_ERROR) { bytesRead = 0; - m_info.lDiskOffset = SDL_SeekIO(M_FILE, 0, SDL_IO_SEEK_CUR); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, 0, MORTAR_IO_SEEK_CUR); } else { m_info.lDiskOffset += bytesRead; @@ -154,11 +154,11 @@ MxLong MXIOINFO::Read(void* p_buf, MxLong p_len) // FUNCTION: BETA10 0x1015e4fc MxLong MXIOINFO::Write(void* p_buf, MxLong p_len) { - Sint64 bytesWritten = 0; + int64_t bytesWritten = 0; if (m_info.pchBuffer) { - Sint64 bytesLeft = m_info.pchEndWrite - m_info.pchNext; + int64_t bytesLeft = m_info.pchEndWrite - m_info.pchNext; while (p_len > 0) { if (bytesLeft > 0) { @@ -190,11 +190,11 @@ MxLong MXIOINFO::Write(void* p_buf, MxLong p_len) } } else if (RAW_M_FILE && p_len > 0) { - bytesWritten = SDL_WriteIO(M_FILE, p_buf, p_len); + bytesWritten = MORTAR_WriteIO(M_FILE, p_buf, p_len); - if (SDL_GetIOStatus(M_FILE) == SDL_IO_STATUS_ERROR) { + if (MORTAR_GetIOStatus(M_FILE) == MORTAR_IO_STATUS_ERROR) { bytesWritten = 0; - m_info.lDiskOffset = SDL_SeekIO(M_FILE, 0, SDL_IO_SEEK_CUR); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, 0, MORTAR_IO_SEEK_CUR); } else { m_info.lDiskOffset += bytesWritten; @@ -210,30 +210,30 @@ MxLong MXIOINFO::Write(void* p_buf, MxLong p_len) // FUNCTION: LEGO1 0x100cca00 // FUNCTION: BETA10 0x1015e6c4 -MxLong MXIOINFO::Seek(MxLong p_offset, SDL_IOWhence p_origin) +MxLong MXIOINFO::Seek(MxLong p_offset, MORTAR_IOWhence p_origin) { MxLong result = -1; - Sint64 bytesRead; + int64_t bytesRead; // If buffered I/O if (m_info.pchBuffer) { - if (p_origin == SDL_IO_SEEK_CUR) { + if (p_origin == MORTAR_IO_SEEK_CUR) { if (!p_offset) { // don't seek at all and just return where we are. return m_info.lBufOffset + (m_info.pchNext - m_info.pchBuffer); } - // With SDL_IO_SEEK_CUR, p_offset is a relative offset. - // Get the absolute position instead and use SDL_IO_SEEK_SET. + // With MORTAR_IO_SEEK_CUR, p_offset is a relative offset. + // Get the absolute position instead and use MORTAR_IO_SEEK_SET. p_offset += m_info.lBufOffset + (m_info.pchNext - m_info.pchBuffer); - p_origin = SDL_IO_SEEK_SET; + p_origin = MORTAR_IO_SEEK_SET; } - else if (p_origin == SDL_IO_SEEK_END) { + else if (p_origin == MORTAR_IO_SEEK_END) { // not possible with buffered I/O return -1; } - // else p_origin == SDL_IO_SEEK_SET. + // else p_origin == MORTAR_IO_SEEK_SET. // is p_offset between the start and end of the buffer? // i.e. can we do the seek without reading more from disk? @@ -244,10 +244,10 @@ MxLong MXIOINFO::Seek(MxLong p_offset, SDL_IOWhence p_origin) else { // we have to read another chunk from disk. if (RAW_M_FILE && !Flush(0)) { - m_info.lDiskOffset = SDL_SeekIO(M_FILE, p_offset, p_origin); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, p_offset, p_origin); if (m_info.lDiskOffset == -1) { - m_info.lDiskOffset = SDL_SeekIO(M_FILE, 0, SDL_IO_SEEK_CUR); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, 0, MORTAR_IO_SEEK_CUR); } else { @@ -257,10 +257,10 @@ MxLong MXIOINFO::Seek(MxLong p_offset, SDL_IOWhence p_origin) // do we need to seek again? // (i.e. are we already aligned to buffer size?) if (p_offset != m_info.lBufOffset) { - m_info.lDiskOffset = SDL_SeekIO(M_FILE, m_info.lBufOffset, SDL_IO_SEEK_SET); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, m_info.lBufOffset, MORTAR_IO_SEEK_SET); if (m_info.lDiskOffset == -1) { - m_info.lDiskOffset = SDL_SeekIO(M_FILE, 0, SDL_IO_SEEK_CUR); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, 0, MORTAR_IO_SEEK_CUR); } } @@ -268,10 +268,10 @@ MxLong MXIOINFO::Seek(MxLong p_offset, SDL_IOWhence p_origin) // is the file open for writing only? if ((m_info.dwFlags & MMIO_RWMODE) == 0 || (m_info.dwFlags & MMIO_RWMODE) == MMIO_READWRITE) { // We can read from the file. Fill the buffer. - bytesRead = SDL_ReadIO(M_FILE, m_info.pchBuffer, m_info.cchBuffer); + bytesRead = MORTAR_ReadIO(M_FILE, m_info.pchBuffer, m_info.cchBuffer); - if (SDL_GetIOStatus(M_FILE) == SDL_IO_STATUS_ERROR) { - m_info.lDiskOffset = SDL_SeekIO(M_FILE, 0, SDL_IO_SEEK_CUR); + if (MORTAR_GetIOStatus(M_FILE) == MORTAR_IO_STATUS_ERROR) { + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, 0, MORTAR_IO_SEEK_CUR); } else { m_info.lDiskOffset += bytesRead; @@ -295,16 +295,16 @@ MxLong MXIOINFO::Seek(MxLong p_offset, SDL_IOWhence p_origin) else if (RAW_M_FILE) { // No buffer so just seek the file directly (if we have a valid handle) // i.e. if we just want to get the current file position - if (p_origin == SDL_IO_SEEK_CUR && p_offset == 0) { + if (p_origin == MORTAR_IO_SEEK_CUR && p_offset == 0) { return m_info.lDiskOffset; } - m_info.lDiskOffset = SDL_SeekIO(M_FILE, p_offset, p_origin); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, p_offset, p_origin); result = m_info.lDiskOffset; if (result == -1) { - m_info.lDiskOffset = SDL_SeekIO(M_FILE, 0, SDL_IO_SEEK_CUR); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, 0, MORTAR_IO_SEEK_CUR); } } @@ -336,7 +336,7 @@ MxU16 MXIOINFO::SetBuffer(char* p_buf, MxLong p_len, MxLong p_unused) MxU16 MXIOINFO::Flush(MxU16 p_unused) { MxU16 result = MMSYSERR_NOERROR; - Sint64 bytesWritten; + int64_t bytesWritten; // if buffer is dirty if (m_info.dwFlags & MMIO_DIRTY) { @@ -348,20 +348,20 @@ MxU16 MXIOINFO::Flush(MxU16 p_unused) MxLong cchBuffer = m_info.cchBuffer; if (cchBuffer > 0) { if (m_info.lBufOffset != m_info.lDiskOffset) { - m_info.lDiskOffset = SDL_SeekIO(M_FILE, m_info.lBufOffset, SDL_IO_SEEK_SET); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, m_info.lBufOffset, MORTAR_IO_SEEK_SET); } // Was the previous seek (if required) successful? if (m_info.lBufOffset != m_info.lDiskOffset) { result = MMIOERR_CANNOTSEEK; - m_info.lDiskOffset = SDL_SeekIO(M_FILE, 0, SDL_IO_SEEK_CUR); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, 0, MORTAR_IO_SEEK_CUR); } else { - bytesWritten = SDL_WriteIO(M_FILE, m_info.pchBuffer, cchBuffer); + bytesWritten = MORTAR_WriteIO(M_FILE, m_info.pchBuffer, cchBuffer); - if (SDL_GetIOStatus(M_FILE) == SDL_IO_STATUS_ERROR || bytesWritten != cchBuffer) { + if (MORTAR_GetIOStatus(M_FILE) == MORTAR_IO_STATUS_ERROR || bytesWritten != cchBuffer) { result = MMIOERR_CANNOTWRITE; - m_info.lDiskOffset = SDL_SeekIO(M_FILE, 0, SDL_IO_SEEK_CUR); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, 0, MORTAR_IO_SEEK_CUR); } else { m_info.lDiskOffset += bytesWritten; @@ -391,8 +391,8 @@ MxU16 MXIOINFO::Advance(MxU16 p_option) MxULong rwmode = m_info.dwFlags & MMIO_RWMODE; if (m_info.pchBuffer) { - Sint64 cch = m_info.cchBuffer; - Sint64 bytesCounter; + int64_t cch = m_info.cchBuffer; + int64_t bytesCounter; // If we can and should write to the file, // if we are being asked to write to the file, @@ -401,19 +401,19 @@ MxU16 MXIOINFO::Advance(MxU16 p_option) ((p_option & MMIO_WRITE) || (rwmode == MMIO_READWRITE)) && cch > 0) { if (m_info.lBufOffset != m_info.lDiskOffset) { - m_info.lDiskOffset = SDL_SeekIO(M_FILE, m_info.lBufOffset, SDL_IO_SEEK_SET); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, m_info.lBufOffset, MORTAR_IO_SEEK_SET); } if (m_info.lBufOffset != m_info.lDiskOffset) { result = MMIOERR_CANNOTSEEK; - m_info.lDiskOffset = SDL_SeekIO(M_FILE, 0, SDL_IO_SEEK_CUR); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, 0, MORTAR_IO_SEEK_CUR); } else { - bytesCounter = SDL_WriteIO(M_FILE, m_info.pchBuffer, cch); + bytesCounter = MORTAR_WriteIO(M_FILE, m_info.pchBuffer, cch); - if (SDL_GetIOStatus(M_FILE) == SDL_IO_STATUS_ERROR || bytesCounter != cch) { + if (MORTAR_GetIOStatus(M_FILE) == MORTAR_IO_STATUS_ERROR || bytesCounter != cch) { result = MMIOERR_CANNOTWRITE; - m_info.lDiskOffset = SDL_SeekIO(M_FILE, 0, SDL_IO_SEEK_CUR); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, 0, MORTAR_IO_SEEK_CUR); } else { m_info.lDiskOffset += bytesCounter; @@ -427,20 +427,20 @@ MxU16 MXIOINFO::Advance(MxU16 p_option) m_info.lBufOffset += cch; if ((!rwmode || rwmode == MMIO_READWRITE) && cch > 0) { if (m_info.lBufOffset != m_info.lDiskOffset) { - m_info.lDiskOffset = SDL_SeekIO(M_FILE, m_info.lBufOffset, SDL_IO_SEEK_SET); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, m_info.lBufOffset, MORTAR_IO_SEEK_SET); } // if previous seek failed if (m_info.lBufOffset != m_info.lDiskOffset) { result = MMIOERR_CANNOTSEEK; - m_info.lDiskOffset = SDL_SeekIO(M_FILE, 0, SDL_IO_SEEK_CUR); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, 0, MORTAR_IO_SEEK_CUR); } else { - bytesCounter = SDL_ReadIO(M_FILE, m_info.pchBuffer, cch); + bytesCounter = MORTAR_ReadIO(M_FILE, m_info.pchBuffer, cch); - if (SDL_GetIOStatus(M_FILE) == SDL_IO_STATUS_ERROR) { + if (MORTAR_GetIOStatus(M_FILE) == MORTAR_IO_STATUS_ERROR) { result = MMIOERR_CANNOTREAD; - m_info.lDiskOffset = SDL_SeekIO(M_FILE, 0, SDL_IO_SEEK_CUR); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, 0, MORTAR_IO_SEEK_CUR); } else { m_info.lDiskOffset += bytesCounter; @@ -535,7 +535,7 @@ MxU16 MXIOINFO::Descend(ISLE_MMCKINFO* p_chunkInfo, const ISLE_MMCKINFO* p_paren else if (p_chunkInfo->ckid == tmp.ckid) { running = FALSE; } - else if (Seek((tmp.cksize & 1) + tmp.cksize, SDL_IO_SEEK_CUR) == -1) { + else if (Seek((tmp.cksize & 1) + tmp.cksize, MORTAR_IO_SEEK_CUR) == -1) { result = MMIOERR_CANNOTSEEK; running = FALSE; } @@ -587,11 +587,11 @@ MxU16 MXIOINFO::Ascend(ISLE_MMCKINFO* p_chunkInfo, MxU16 p_ascend) m_info.dwFlags |= MMIO_DIRTY; } else { - m_info.lDiskOffset = SDL_SeekIO(M_FILE, ofs, SDL_IO_SEEK_SET); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, ofs, MORTAR_IO_SEEK_SET); if (m_info.lDiskOffset == ofs) { - if (SDL_WriteIO(M_FILE, (char*) &size, 4) != 4) { - m_info.lDiskOffset = SDL_SeekIO(M_FILE, 0, SDL_IO_SEEK_CUR); + if (MORTAR_WriteIO(M_FILE, (char*) &size, 4) != 4) { + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, 0, MORTAR_IO_SEEK_CUR); result = MMIOERR_CANNOTWRITE; } else { @@ -599,7 +599,7 @@ MxU16 MXIOINFO::Ascend(ISLE_MMCKINFO* p_chunkInfo, MxU16 p_ascend) } } else { - m_info.lDiskOffset = SDL_SeekIO(M_FILE, 0, SDL_IO_SEEK_CUR); + m_info.lDiskOffset = MORTAR_SeekIO(M_FILE, 0, MORTAR_IO_SEEK_CUR); result = MMIOERR_CANNOTSEEK; } } @@ -608,7 +608,7 @@ MxU16 MXIOINFO::Ascend(ISLE_MMCKINFO* p_chunkInfo, MxU16 p_ascend) // Seek past the end of the chunk (plus optional pad byte if size is odd) if (result == 0 && - Seek((p_chunkInfo->cksize & 1) + p_chunkInfo->cksize + p_chunkInfo->dwDataOffset, SDL_IO_SEEK_SET) == -1) { + Seek((p_chunkInfo->cksize & 1) + p_chunkInfo->cksize + p_chunkInfo->dwDataOffset, MORTAR_IO_SEEK_SET) == -1) { result = MMIOERR_CANNOTSEEK; } @@ -631,7 +631,7 @@ MxU16 MXIOINFO::CreateChunk(ISLE_MMCKINFO* p_chunkInfo, MxU16 p_create) p_chunkInfo->ckid = FOURCC_LIST; } - p_chunkInfo->dwDataOffset = Seek(0, SDL_IO_SEEK_CUR); + p_chunkInfo->dwDataOffset = Seek(0, MORTAR_IO_SEEK_CUR); if (p_chunkInfo->dwDataOffset == -1) { result = MMIOERR_CANNOTSEEK; } diff --git a/LEGO1/omni/src/system/mxautolock.cpp b/LEGO1/omni/src/system/mxautolock.cpp index 227085dd..ff5d1d7b 100644 --- a/LEGO1/omni/src/system/mxautolock.cpp +++ b/LEGO1/omni/src/system/mxautolock.cpp @@ -9,7 +9,7 @@ MxAutoLock::MxAutoLock(MxCriticalSection* p_criticalSection, const char* filenam m_criticalSection = p_criticalSection; m_currentThreadId = GetCurrentThreadId(); - if (m_criticalSection != NULL) { + if (m_criticalSection != nullptr) { m_criticalSection->Enter(m_currentThreadId, filename, line); } } @@ -19,7 +19,7 @@ MxAutoLock::MxAutoLock(MxCriticalSection* p_criticalSection) { m_criticalSection = p_criticalSection; - if (m_criticalSection != NULL) { + if (m_criticalSection != nullptr) { m_criticalSection->Enter(); } } @@ -29,7 +29,7 @@ MxAutoLock::MxAutoLock(MxCriticalSection* p_criticalSection) // FUNCTION: BETA10 0x10138744 MxAutoLock::~MxAutoLock() { - if (m_criticalSection != NULL) { + if (m_criticalSection != nullptr) { m_criticalSection->Leave(); } } diff --git a/LEGO1/omni/src/system/mxcriticalsection.cpp b/LEGO1/omni/src/system/mxcriticalsection.cpp index e940c847..5e164c51 100644 --- a/LEGO1/omni/src/system/mxcriticalsection.cpp +++ b/LEGO1/omni/src/system/mxcriticalsection.cpp @@ -11,14 +11,14 @@ MxS32 g_useMutex = FALSE; // FUNCTION: LEGO1 0x100b6d20 MxCriticalSection::MxCriticalSection() { - m_mutex = SDL_CreateMutex(); + m_mutex = MORTAR_CreateMutex(); } // FUNCTION: LEGO1 0x100b6d60 MxCriticalSection::~MxCriticalSection() { if (m_mutex != NULL) { - SDL_DestroyMutex(m_mutex); + MORTAR_DestroyMutex(m_mutex); } } @@ -53,7 +53,7 @@ void MxCriticalSection::Enter(unsigned long p_threadId, const char* filename, in // FUNCTION: LEGO1 0x100b6d80 void MxCriticalSection::Enter() { - SDL_LockMutex(m_mutex); + MORTAR_LockMutex(m_mutex); } #endif @@ -61,7 +61,7 @@ void MxCriticalSection::Enter() // FUNCTION: BETA10 0x1013c7ef void MxCriticalSection::Leave() { - SDL_UnlockMutex(m_mutex); + MORTAR_UnlockMutex(m_mutex); } // FUNCTION: LEGO1 0x100b6e00 diff --git a/LEGO1/omni/src/system/mxsemaphore.cpp b/LEGO1/omni/src/system/mxsemaphore.cpp index 2cd2016e..76fdba33 100644 --- a/LEGO1/omni/src/system/mxsemaphore.cpp +++ b/LEGO1/omni/src/system/mxsemaphore.cpp @@ -19,7 +19,7 @@ MxResult MxSemaphore::Init(MxU32 p_initialCount, MxU32 p_maxCount) // [library:synchronization] No support for max count, but shouldn't be necessary MxResult result = FAILURE; - m_semaphore = SDL_CreateSemaphore(p_initialCount); + m_semaphore = MORTAR_CreateSemaphore(p_initialCount); if (!m_semaphore) { goto done; } @@ -35,7 +35,7 @@ MxResult MxSemaphore::Init(MxU32 p_initialCount, MxU32 p_maxCount) void MxSemaphore::Acquire() { // [library:synchronization] Removed timeout since only INFINITE is ever requested - SDL_WaitSemaphore(m_semaphore); + MORTAR_WaitSemaphore(m_semaphore); } // FUNCTION: BETA10 0x10159385 @@ -49,5 +49,5 @@ void MxSemaphore::TryAcquire() void MxSemaphore::Release() { // [library:synchronization] Removed release count since only 1 is ever requested - SDL_SignalSemaphore(m_semaphore); + MORTAR_SignalSemaphore(m_semaphore); } diff --git a/LEGO1/omni/src/system/mxthread.cpp b/LEGO1/omni/src/system/mxthread.cpp index 307db15a..21c73d84 100644 --- a/LEGO1/omni/src/system/mxthread.cpp +++ b/LEGO1/omni/src/system/mxthread.cpp @@ -2,7 +2,7 @@ #include "decomp.h" -#include +#include DECOMP_SIZE_ASSERT(MxThread, 0x1c) @@ -19,7 +19,7 @@ MxThread::MxThread() MxThread::~MxThread() { if (m_thread) { - SDL_WaitThread(m_thread, NULL); + MORTAR_WaitThread(m_thread, NULL); } } @@ -33,17 +33,8 @@ MxResult MxThread::Start(MxS32 p_stackSize, MxS32 p_flag) goto done; } - { - const SDL_PropertiesID props = SDL_CreateProperties(); - SDL_SetPointerProperty(props, SDL_PROP_THREAD_CREATE_ENTRY_FUNCTION_POINTER, (void*) MxThread::ThreadProc); - SDL_SetPointerProperty(props, SDL_PROP_THREAD_CREATE_USERDATA_POINTER, this); - SDL_SetNumberProperty(props, SDL_PROP_THREAD_CREATE_STACKSIZE_NUMBER, p_stackSize * 4); - - if (!(m_thread = SDL_CreateThreadWithProperties(props))) { - goto done; - } - - SDL_DestroyProperties(props); + if (!(m_thread = MORTAR_CreateThread(MxThread::ThreadProc, this, p_stackSize * 4))) { + goto done; } result = SUCCESS; @@ -56,7 +47,7 @@ MxResult MxThread::Start(MxS32 p_stackSize, MxS32 p_flag) // FUNCTION: BETA10 0x101476ee void MxThread::Sleep(MxS32 p_milliseconds) { - SDL_Delay(p_milliseconds); + MORTAR_Delay(p_milliseconds); } // FUNCTION: BETA10 0x10147710 diff --git a/LEGO1/omni/src/video/mxbitmap.cpp b/LEGO1/omni/src/video/mxbitmap.cpp index 90f41663..33de9b94 100644 --- a/LEGO1/omni/src/video/mxbitmap.cpp +++ b/LEGO1/omni/src/video/mxbitmap.cpp @@ -177,9 +177,9 @@ MxResult MxBitmap::ImportBitmap(MxBitmap* p_bitmap) MxLong MxBitmap::Read(const char* p_filename) { MxResult result = FAILURE; - SDL_IOStream* handle; + MORTAR_IOStream* handle; - handle = SDL_IOFromFile(p_filename, "rb"); + handle = MORTAR_IOFromFile(p_filename, "rb"); if (handle == NULL) { goto done; @@ -193,7 +193,7 @@ MxLong MxBitmap::Read(const char* p_filename) done: if (handle) { - SDL_CloseIO(handle); + MORTAR_CloseIO(handle); } return result; @@ -201,7 +201,7 @@ MxLong MxBitmap::Read(const char* p_filename) // FUNCTION: LEGO1 0x100bcd60 // FUNCTION: BETA10 0x1013d169 -MxResult MxBitmap::LoadFile(SDL_IOStream* p_handle) +MxResult MxBitmap::LoadFile(MORTAR_IOStream* p_handle) { MxResult result = FAILURE; MxLong unused = 0; @@ -210,7 +210,7 @@ MxResult MxBitmap::LoadFile(SDL_IOStream* p_handle) BITMAPFILEHEADER hdr; static_assert(sizeof(BITMAPFILEHEADER) == 14, "Incorrect size"); - if (!SDL_ReadIO(p_handle, &hdr, 14)) { + if (!MORTAR_ReadIO(p_handle, &hdr, 14)) { goto done; } @@ -223,7 +223,7 @@ MxResult MxBitmap::LoadFile(SDL_IOStream* p_handle) goto done; } - if (!SDL_ReadIO(p_handle, m_info, MxBitmapInfoSize())) { + if (!MORTAR_ReadIO(p_handle, m_info, MxBitmapInfoSize())) { goto done; } @@ -237,7 +237,7 @@ MxResult MxBitmap::LoadFile(SDL_IOStream* p_handle) goto done; } - if (!SDL_ReadIO(p_handle, m_data, size)) { + if (!MORTAR_ReadIO(p_handle, m_data, size)) { goto done; } diff --git a/LEGO1/omni/src/video/mxdisplaysurface.cpp b/LEGO1/omni/src/video/mxdisplaysurface.cpp index 4ebccb58..7e24ad1f 100644 --- a/LEGO1/omni/src/video/mxdisplaysurface.cpp +++ b/LEGO1/omni/src/video/mxdisplaysurface.cpp @@ -8,8 +8,8 @@ #include "mxutilities.h" #include "mxvideomanager.h" -#include #include +#include #ifdef MINIWIN #include "miniwin/windows.h" #else @@ -184,7 +184,7 @@ MxResult MxDisplaySurface::Create(MxVideoParam& p_videoParam) MxS32 height = m_videoParam.GetRect().GetHeight(); if (lpDirectDraw->SetCooperativeLevel(hWnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN)) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "DirectDraw::SetCooperativeLevel failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "DirectDraw::SetCooperativeLevel failed"); goto done; } @@ -192,7 +192,7 @@ MxResult MxDisplaySurface::Create(MxVideoParam& p_videoParam) ddsd.dwSize = sizeof(ddsd); if (lpDirectDraw->GetDisplayMode(&ddsd)) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "DirectDraw::GetDisplayMode failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "DirectDraw::GetDisplayMode failed"); goto done; } @@ -200,7 +200,7 @@ MxResult MxDisplaySurface::Create(MxVideoParam& p_videoParam) if (ddsd.dwWidth != width || ddsd.dwHeight != height || ddsd.ddpfPixelFormat.dwRGBBitCount != bitdepth) { if (lpDirectDraw->SetDisplayMode(width, height, bitdepth)) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "DirectDraw::SetDisplayMode failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "DirectDraw::SetDisplayMode failed"); goto done; } } @@ -214,14 +214,14 @@ MxResult MxDisplaySurface::Create(MxVideoParam& p_videoParam) ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_3DDEVICE | DDSCAPS_COMPLEX; if (lpDirectDraw->CreateSurface(&ddsd, &m_ddSurface1, NULL)) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "DirectDraw::CreateSurface failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "DirectDraw::CreateSurface failed"); goto done; } ddsd.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER; if (m_ddSurface1->GetAttachedSurface(&ddsd.ddsCaps, &m_ddSurface2)) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "DirectDrawSurface::GetAttachedSurface failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "DirectDrawSurface::GetAttachedSurface failed"); goto done; } } @@ -232,7 +232,7 @@ MxResult MxDisplaySurface::Create(MxVideoParam& p_videoParam) ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; if (lpDirectDraw->CreateSurface(&ddsd, &m_ddSurface1, NULL)) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "DirectDraw::CreateSurface failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "DirectDraw::CreateSurface failed"); goto done; } @@ -248,7 +248,7 @@ MxResult MxDisplaySurface::Create(MxVideoParam& p_videoParam) } if (lpDirectDraw->CreateSurface(&ddsd, &m_ddSurface2, NULL)) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "DirectDraw::CreateSurface failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "DirectDraw::CreateSurface failed"); goto done; } } @@ -262,8 +262,8 @@ MxResult MxDisplaySurface::Create(MxVideoParam& p_videoParam) result = SUCCESS; } else { - SDL_LogError( - SDL_LOG_CATEGORY_APPLICATION, + MORTAR_LogError( + MORTAR_LOG_CATEGORY_APPLICATION, "DirectDraw::CreateClipper or DirectDrawSurface::SetClipper failed" ); } @@ -649,7 +649,7 @@ void MxDisplaySurface::Display(MxS32 p_left, MxS32 p_top, MxS32 p_left2, MxS32 p ddbltfx.dwFillColor = 0xFF000000; if (m_ddSurface2->Blt(NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx) != DD_OK) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "MxDisplaySurface::Display error\n"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "MxDisplaySurface::Display error\n"); } } m_ddSurface1->Flip(NULL, DDFLIP_WAIT); diff --git a/LEGO1/omni/src/video/mxstillpresenter.cpp b/LEGO1/omni/src/video/mxstillpresenter.cpp index 53a0427a..bc6a9bfd 100644 --- a/LEGO1/omni/src/video/mxstillpresenter.cpp +++ b/LEGO1/omni/src/video/mxstillpresenter.cpp @@ -12,7 +12,7 @@ #include "mxutilities.h" #include "mxvideomanager.h" -#include +#include DECOMP_SIZE_ASSERT(MxStillPresenter, 0x6c); @@ -212,7 +212,7 @@ void MxStillPresenter::ParseExtra() char output[512]; if (KeyValueStringParse(output, g_strVISIBILITY, extraCopy)) { - if (SDL_strcasecmp(output, "FALSE") == 0) { + if (MORTAR_strcasecmp(output, "FALSE") == 0) { Enable(FALSE); } } diff --git a/LEGO1/omni/src/video/mxvideomanager.cpp b/LEGO1/omni/src/video/mxvideomanager.cpp index 40078e66..4ecb920f 100644 --- a/LEGO1/omni/src/video/mxvideomanager.cpp +++ b/LEGO1/omni/src/video/mxvideomanager.cpp @@ -10,7 +10,7 @@ #include "mxticklemanager.h" #include "mxticklethread.h" -#include +#include DECOMP_SIZE_ASSERT(MxVideoManager, 0x64) @@ -232,7 +232,7 @@ MxResult MxVideoManager::Create(MxVideoParam& p_videoParam, MxU32 p_frequencyMS, m_unk0x60 = TRUE; if (MxPresentationManager::Create() != SUCCESS) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "MxPresentationManager::Create failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "MxPresentationManager::Create failed"); goto done; } @@ -243,17 +243,17 @@ MxResult MxVideoManager::Create(MxVideoParam& p_videoParam, MxU32 p_frequencyMS, m_region = new MxRegion(); if (!m_region) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "MxRegion::MxRegion failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "MxRegion::MxRegion failed"); goto done; } if (DirectDrawCreate(NULL, &m_pDirectDraw, NULL) != DD_OK) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "::DirectDrawCreate failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "::DirectDrawCreate failed"); goto done; } if (m_pDirectDraw->SetCooperativeLevel(MxOmni::GetInstance()->GetWindowHandle(), DDSCL_NORMAL) != DD_OK) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "IDirectDraw::SetCooperativeLevel failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "IDirectDraw::SetCooperativeLevel failed"); goto done; } @@ -263,7 +263,7 @@ MxResult MxVideoManager::Create(MxVideoParam& p_videoParam, MxU32 p_frequencyMS, m_videoParam.SetPalette(palette); if (!palette) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "MxPalette::MxPalette failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "MxPalette::MxPalette failed"); goto done; } } @@ -272,7 +272,7 @@ MxResult MxVideoManager::Create(MxVideoParam& p_videoParam, MxU32 p_frequencyMS, m_videoParam.SetPalette(palette); if (!palette) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "MxPalette::Clone failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "MxPalette::Clone failed"); goto done; } } @@ -285,7 +285,7 @@ MxResult MxVideoManager::Create(MxVideoParam& p_videoParam, MxU32 p_frequencyMS, m_thread = new MxTickleThread(this, p_frequencyMS); if (!m_thread || m_thread->Start(0, 0) != SUCCESS) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "MxTickleThread::MxTickleThread failed"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "MxTickleThread::MxTickleThread failed"); goto done; } } @@ -296,8 +296,8 @@ MxResult MxVideoManager::Create(MxVideoParam& p_videoParam, MxU32 p_frequencyMS, status = SUCCESS; } else { - SDL_LogError( - SDL_LOG_CATEGORY_APPLICATION, + MORTAR_LogError( + MORTAR_LOG_CATEGORY_APPLICATION, "MxDisplaySurface::MxDisplaySurface/MxDisplaySurface::Create failed" ); } diff --git a/extensions/include/extensions/textureloader.h b/extensions/include/extensions/textureloader.h index a318c9b8..6fb17b20 100644 --- a/extensions/include/extensions/textureloader.h +++ b/extensions/include/extensions/textureloader.h @@ -23,7 +23,7 @@ class TextureLoader { }; private: - static SDL_Surface* FindTexture(const char* p_name); + static MORTAR_Surface* FindTexture(const char* p_name); }; #ifdef EXTENSIONS diff --git a/extensions/src/extensions.cpp b/extensions/src/extensions.cpp index 2eb276c6..ec6de22d 100644 --- a/extensions/src/extensions.cpp +++ b/extensions/src/extensions.cpp @@ -3,24 +3,24 @@ #include "extensions/siloader.h" #include "extensions/textureloader.h" -#include +#include void Extensions::Enable(const char* p_key, std::map p_options) { for (const char* key : availableExtensions) { - if (!SDL_strcasecmp(p_key, key)) { - if (!SDL_strcasecmp(p_key, "extensions:texture loader")) { + if (!MORTAR_strcasecmp(p_key, key)) { + if (!MORTAR_strcasecmp(p_key, "extensions:texture loader")) { TextureLoader::options = std::move(p_options); TextureLoader::enabled = true; TextureLoader::Initialize(); } - else if (!SDL_strcasecmp(p_key, "extensions:si loader")) { + else if (!MORTAR_strcasecmp(p_key, "extensions:si loader")) { SiLoader::options = std::move(p_options); SiLoader::enabled = true; SiLoader::Initialize(); } - SDL_Log("Enabled extension: %s", p_key); + MORTAR_Log("Enabled extension: %s", p_key); break; } } diff --git a/extensions/src/siloader.cpp b/extensions/src/siloader.cpp index 0768bf1a..44c6164e 100644 --- a/extensions/src/siloader.cpp +++ b/extensions/src/siloader.cpp @@ -6,7 +6,7 @@ #include "mxmisc.h" #include "mxstreamer.h" -#include +#include #include using namespace Extensions; @@ -26,22 +26,22 @@ bool SiLoader::enabled = false; void SiLoader::Initialize() { - char* files = SDL_strdup(options["si loader:files"].c_str()); + char* files = MORTAR_strdup(options["si loader:files"].c_str()); char* saveptr; - for (char* file = SDL_strtok_r(files, ",\n\r ", &saveptr); file; file = SDL_strtok_r(NULL, ",\n\r ", &saveptr)) { + for (char* file = MORTAR_strtok_r(files, ",\n\r ", &saveptr); file; file = MORTAR_strtok_r(NULL, ",\n\r ", &saveptr)) { SiLoader::files.emplace_back(file); } - char* directives = SDL_strdup(options["si loader:directives"].c_str()); + char* directives = MORTAR_strdup(options["si loader:directives"].c_str()); - for (char* directive = SDL_strtok_r(directives, ",\n\r ", &saveptr); directive; - directive = SDL_strtok_r(NULL, ",\n\r ", &saveptr)) { + for (char* directive = MORTAR_strtok_r(directives, ",\n\r ", &saveptr); directive; + directive = MORTAR_strtok_r(NULL, ",\n\r ", &saveptr)) { SiLoader::directives.emplace_back(directive); } - SDL_free(files); - SDL_free(directives); + MORTAR_free(files); + MORTAR_free(directives); } bool SiLoader::Load() @@ -104,7 +104,7 @@ std::optional SiLoader::HandleStart(MxDSAction& p_action) } } - if (p_action.GetExtraLength() == 0 || !SDL_strstr(p_action.GetExtraData(), prependedMarker)) { + if (p_action.GetExtraLength() == 0 || !MORTAR_strstr(p_action.GetExtraData(), prependedMarker)) { for (const auto& key : prepend) { if (key.first == object) { MxDSAction action; @@ -247,7 +247,7 @@ bool SiLoader::LoadFile(const char* p_file) path.MapPathToFilesystem(); if (si.Read(path.GetData(), si::Interleaf::ObjectsOnly) != si::Interleaf::ERROR_SUCCESS) { - SDL_Log("Could not parse SI file %s", p_file); + MORTAR_Log("Could not parse SI file %s", p_file); return false; } } @@ -265,7 +265,7 @@ bool SiLoader::LoadDirective(const char* p_directive) char originAtom[256], targetAtom[256]; uint32_t originId, targetId; - if (SDL_sscanf( + if (MORTAR_sscanf( p_directive, "StartWith:%255[^:;]%*[:;]%u%*[:;]%255[^:;]%*[:;]%u", originAtom, @@ -278,28 +278,28 @@ bool SiLoader::LoadDirective(const char* p_directive) StreamObject{MxAtomId{targetAtom, e_lowerCase2}, targetId} ); } - else if (SDL_sscanf(p_directive, "RemoveWith:%255[^:;]%*[:;]%u%*[:;]%255[^:;]%*[:;]%u", originAtom, &originId, targetAtom, &targetId) == 4) { + else if (MORTAR_sscanf(p_directive, "RemoveWith:%255[^:;]%*[:;]%u%*[:;]%255[^:;]%*[:;]%u", originAtom, &originId, targetAtom, &targetId) == 4) { removeWith.emplace_back( StreamObject{MxAtomId{originAtom, e_lowerCase2}, originId}, StreamObject{MxAtomId{targetAtom, e_lowerCase2}, targetId} ); } - else if (SDL_sscanf(p_directive, "Replace:%255[^:;]%*[:;]%u%*[:;]%255[^:;]%*[:;]%u", originAtom, &originId, targetAtom, &targetId) == 4) { + else if (MORTAR_sscanf(p_directive, "Replace:%255[^:;]%*[:;]%u%*[:;]%255[^:;]%*[:;]%u", originAtom, &originId, targetAtom, &targetId) == 4) { replace.emplace_back( StreamObject{MxAtomId{originAtom, e_lowerCase2}, originId}, StreamObject{MxAtomId{targetAtom, e_lowerCase2}, targetId} ); } - else if (SDL_sscanf(p_directive, "Prepend:%255[^:;]%*[:;]%u%*[:;]%255[^:;]%*[:;]%u", originAtom, &originId, targetAtom, &targetId) == 4) { + else if (MORTAR_sscanf(p_directive, "Prepend:%255[^:;]%*[:;]%u%*[:;]%255[^:;]%*[:;]%u", originAtom, &originId, targetAtom, &targetId) == 4) { prepend.emplace_back( StreamObject{MxAtomId{targetAtom, e_lowerCase2}, targetId}, StreamObject{MxAtomId{originAtom, e_lowerCase2}, originId} ); } - else if (SDL_sscanf(p_directive, "FullScreenMovie:%255[^:;]%*[:;]%u", originAtom, &originId) == 2) { + else if (MORTAR_sscanf(p_directive, "FullScreenMovie:%255[^:;]%*[:;]%u", originAtom, &originId) == 2) { fullScreenMovie.emplace_back(StreamObject{MxAtomId{originAtom, e_lowerCase2}, originId}); } - else if (SDL_sscanf(p_directive, "Disable3d:%255[^:;]%*[:;]%u", originAtom, &originId) == 2) { + else if (MORTAR_sscanf(p_directive, "Disable3d:%255[^:;]%*[:;]%u", originAtom, &originId) == 2) { disable3d.emplace_back(StreamObject{MxAtomId{originAtom, e_lowerCase2}, originId}); } @@ -311,7 +311,7 @@ MxStreamController* SiLoader::OpenStream(const char* p_file) MxStreamController* controller; if (!(controller = Streamer()->Open(p_file, MxStreamer::e_diskStream))) { - SDL_Log("Could not load SI file %s", p_file); + MORTAR_Log("Could not load SI file %s", p_file); return nullptr; } @@ -328,8 +328,8 @@ void SiLoader::ParseExtra(const MxAtomId& p_atom, si::Core* p_core) char atom[256]; uint32_t id; - if ((directive = SDL_strstr(extra.c_str(), "StartWith:"))) { - if (SDL_sscanf(directive, "StartWith:%255[^:;]%*[:;]%u", atom, &id) == 2) { + if ((directive = MORTAR_strstr(extra.c_str(), "StartWith:"))) { + if (MORTAR_sscanf(directive, "StartWith:%255[^:;]%*[:;]%u", atom, &id) == 2) { startWith.emplace_back( StreamObject{MxAtomId{atom, e_lowerCase2}, id}, StreamObject{p_atom, object->id_} @@ -337,8 +337,8 @@ void SiLoader::ParseExtra(const MxAtomId& p_atom, si::Core* p_core) } } - if ((directive = SDL_strstr(extra.c_str(), "RemoveWith:"))) { - if (SDL_sscanf(directive, "RemoveWith:%255[^:;]%*[:;]%u", atom, &id) == 2) { + if ((directive = MORTAR_strstr(extra.c_str(), "RemoveWith:"))) { + if (MORTAR_sscanf(directive, "RemoveWith:%255[^:;]%*[:;]%u", atom, &id) == 2) { removeWith.emplace_back( StreamObject{MxAtomId{atom, e_lowerCase2}, id}, StreamObject{p_atom, object->id_} @@ -346,8 +346,8 @@ void SiLoader::ParseExtra(const MxAtomId& p_atom, si::Core* p_core) } } - if ((directive = SDL_strstr(extra.c_str(), "Replace:"))) { - if (SDL_sscanf(directive, "Replace:%255[^:;]%*[:;]%u", atom, &id) == 2) { + if ((directive = MORTAR_strstr(extra.c_str(), "Replace:"))) { + if (MORTAR_sscanf(directive, "Replace:%255[^:;]%*[:;]%u", atom, &id) == 2) { replace.emplace_back( StreamObject{MxAtomId{atom, e_lowerCase2}, id}, StreamObject{p_atom, object->id_} @@ -355,8 +355,8 @@ void SiLoader::ParseExtra(const MxAtomId& p_atom, si::Core* p_core) } } - if ((directive = SDL_strstr(extra.c_str(), "Prepend:"))) { - if (SDL_sscanf(directive, "Prepend:%255[^:;]%*[:;]%u", atom, &id) == 2) { + if ((directive = MORTAR_strstr(extra.c_str(), "Prepend:"))) { + if (MORTAR_sscanf(directive, "Prepend:%255[^:;]%*[:;]%u", atom, &id) == 2) { prepend.emplace_back( StreamObject{p_atom, object->id_}, StreamObject{MxAtomId{atom, e_lowerCase2}, id} @@ -364,11 +364,11 @@ void SiLoader::ParseExtra(const MxAtomId& p_atom, si::Core* p_core) } } - if ((directive = SDL_strstr(extra.c_str(), "FullScreenMovie"))) { + if ((directive = MORTAR_strstr(extra.c_str(), "FullScreenMovie"))) { fullScreenMovie.emplace_back(StreamObject{MxAtomId{atom, e_lowerCase2}, id}); } - if ((directive = SDL_strstr(extra.c_str(), "Disable3d"))) { + if ((directive = MORTAR_strstr(extra.c_str(), "Disable3d"))) { disable3d.emplace_back(StreamObject{MxAtomId{atom, e_lowerCase2}, id}); } } diff --git a/extensions/src/textureloader.cpp b/extensions/src/textureloader.cpp index 73f42ad8..b88a9dd3 100644 --- a/extensions/src/textureloader.cpp +++ b/extensions/src/textureloader.cpp @@ -22,12 +22,12 @@ void TextureLoader::Initialize() bool TextureLoader::PatchTexture(LegoTextureInfo* p_textureInfo) { - SDL_Surface* surface = FindTexture(p_textureInfo->m_name); + MORTAR_Surface* surface = FindTexture(p_textureInfo->m_name); if (!surface) { return false; } - const SDL_PixelFormatDetails* details = SDL_GetPixelFormatDetails(surface->format); + const MORTAR_PixelFormatDetails* details = MORTAR_GetPixelFormatDetails(surface->format); DDSURFACEDESC desc; memset(&desc, 0, sizeof(desc)); @@ -46,7 +46,7 @@ bool TextureLoader::PatchTexture(LegoTextureInfo* p_textureInfo) LPDIRECTDRAW pDirectDraw = VideoManager()->GetDirect3D()->DirectDraw(); if (pDirectDraw->CreateSurface(&desc, &p_textureInfo->m_surface, NULL) != DD_OK) { - SDL_DestroySurface(surface); + MORTAR_DestroySurface(surface); return false; } @@ -54,17 +54,17 @@ bool TextureLoader::PatchTexture(LegoTextureInfo* p_textureInfo) desc.dwSize = sizeof(desc); if (p_textureInfo->m_surface->Lock(NULL, &desc, DDLOCK_SURFACEMEMORYPTR | DDLOCK_WRITEONLY, NULL) != DD_OK) { - SDL_DestroySurface(surface); + MORTAR_DestroySurface(surface); return false; } MxU8* dst = (MxU8*) desc.lpSurface; - Uint8* srcPixels = (Uint8*) surface->pixels; + uint8_t* srcPixels = (uint8_t*) surface->pixels; if (details->bits_per_pixel == 8) { - SDL_Palette* sdlPalette = SDL_GetSurfacePalette(surface); + MORTAR_Palette* sdlPalette = MORTAR_GetSurfacePalette(surface); if (!sdlPalette) { - SDL_DestroySurface(surface); + MORTAR_DestroySurface(surface); return false; } @@ -78,7 +78,7 @@ bool TextureLoader::PatchTexture(LegoTextureInfo* p_textureInfo) LPDIRECTDRAWPALETTE ddPalette = nullptr; if (pDirectDraw->CreatePalette(DDPCAPS_8BIT | DDPCAPS_ALLOW256, entries, &ddPalette, NULL) != DD_OK) { - SDL_DestroySurface(surface); + MORTAR_DestroySurface(surface); return false; } @@ -92,30 +92,30 @@ bool TextureLoader::PatchTexture(LegoTextureInfo* p_textureInfo) if (((TglImpl::RendererImpl*) VideoManager()->GetRenderer()) ->CreateTextureFromSurface(p_textureInfo->m_surface, &p_textureInfo->m_texture) != D3DRM_OK) { - SDL_DestroySurface(surface); + MORTAR_DestroySurface(surface); return false; } p_textureInfo->m_texture->SetAppData((LPD3DRM_APPDATA) p_textureInfo); - SDL_DestroySurface(surface); + MORTAR_DestroySurface(surface); return true; } -SDL_Surface* TextureLoader::FindTexture(const char* p_name) +MORTAR_Surface* TextureLoader::FindTexture(const char* p_name) { if (std::find(excludedFiles.begin(), excludedFiles.end(), p_name) != excludedFiles.end()) { return nullptr; } - SDL_Surface* surface; + MORTAR_Surface* surface; const char* texturePath = options["texture loader:texture path"].c_str(); MxString path = MxString(MxOmni::GetHD()) + texturePath + "/" + p_name + ".bmp"; path.MapPathToFilesystem(); - if (!(surface = SDL_LoadBMP(path.GetData()))) { + if (!(surface = MORTAR_LoadBMP(path.GetData()))) { path = MxString(MxOmni::GetCD()) + texturePath + "/" + p_name + ".bmp"; path.MapPathToFilesystem(); - surface = SDL_LoadBMP(path.GetData()); + surface = MORTAR_LoadBMP(path.GetData()); } return surface; diff --git a/miniwin/CMakeLists.txt b/miniwin/CMakeLists.txt index 112adfda..410e3f66 100644 --- a/miniwin/CMakeLists.txt +++ b/miniwin/CMakeLists.txt @@ -26,6 +26,7 @@ add_library(miniwin STATIC EXCLUDE_FROM_ALL target_compile_definitions(miniwin PRIVATE $<$:DEBUG> ) +target_link_libraries(miniwin PRIVATE mortar::declare_embedded) list(APPEND GRAPHICS_BACKENDS USE_SOFTWARE_RENDER) list(APPEND GRAPHICS_BACKENDS USE_SDL_GPU) @@ -131,6 +132,11 @@ if(USE_SDL_GPU IN_LIST GRAPHICS_BACKENDS) src/d3drm/backends/sdl3gpu/renderer.cpp src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.cpp ) + set_property(SOURCE + "${CMAKE_CURRENT_SOURCE_DIR}/src/d3drm/backends/sdl3gpu/renderer.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.cpp" + APPEND PROPERTY INCLUDE_DIRECTORIES "$" + ) endif() if(USE_SOFTWARE_RENDER IN_LIST GRAPHICS_BACKENDS) @@ -148,7 +154,7 @@ target_include_directories(miniwin ) target_link_libraries(miniwin PUBLIC miniwin-headers) -target_link_libraries(miniwin PRIVATE SDL3::SDL3) +target_link_libraries(miniwin PRIVATE mortar::headers) target_compile_definitions(miniwin PUBLIC ${GRAPHICS_BACKENDS}) @@ -260,4 +266,3 @@ if(ISLE_COMPILE_SHADERS) "--shader-jsons" ${shader_jsons} DEPENDS "${py_gencshadersource}" ${shader_headers} ${shader_jsons}) endif() -target_sources(miniwin PRIVATE "${index}" "${index_cpp}") diff --git a/miniwin/include/miniwin/miniwindevice.h b/miniwin/include/miniwin/miniwindevice.h index de28e76a..91181b52 100644 --- a/miniwin/include/miniwin/miniwindevice.h +++ b/miniwin/include/miniwin/miniwindevice.h @@ -1,10 +1,10 @@ #pragma once -#include +#include DEFINE_GUID(IID_IDirect3DRMMiniwinDevice, 0x6eb09673, 0x8d30, 0x4d8a, 0x8d, 0x81, 0x34, 0xea, 0x69, 0x30, 0x12, 0x01); struct IDirect3DRMMiniwinDevice : virtual public IUnknown { - virtual bool ConvertEventToRenderCoordinates(SDL_Event* event) = 0; - virtual bool ConvertRenderToWindowCoordinates(Sint32 inX, Sint32 inY, Sint32& outX, Sint32& outY) = 0; + virtual bool ConvertEventToRenderCoordinates(MORTAR_Event* event) = 0; + virtual bool ConvertRenderToWindowCoordinates(int inX, int inY, int& outX, int& outY) = 0; }; diff --git a/miniwin/include/miniwin/windows.h b/miniwin/include/miniwin/windows.h index 46bfd43c..e8f83e2a 100644 --- a/miniwin/include/miniwin/windows.h +++ b/miniwin/include/miniwin/windows.h @@ -1,7 +1,7 @@ #pragma once -#include #include +#include #include #include diff --git a/miniwin/src/d3drm/backends/citro3d/renderer.cpp b/miniwin/src/d3drm/backends/citro3d/renderer.cpp index a82f1238..d7d8ec35 100644 --- a/miniwin/src/d3drm/backends/citro3d/renderer.cpp +++ b/miniwin/src/d3drm/backends/citro3d/renderer.cpp @@ -84,10 +84,10 @@ void Citro3DRenderer::SetFrustumPlanes(const Plane* frustumPlanes) struct Citro3DCacheDestroyContext { Citro3DRenderer* renderer; - Uint32 id; + uint32_t id; }; -void Citro3DRenderer::AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture) +void Citro3DRenderer::AddTextureDestroyCallback(uint32_t id, IDirect3DRMTexture* texture) { auto* ctx = new Citro3DCacheDestroyContext{this, id}; texture->AddDestroyCallback( @@ -115,10 +115,10 @@ static int NearestPowerOfTwoClamp(int val) return 512; } -static SDL_Surface* ConvertAndResizeSurface(SDL_Surface* original, bool isUI, float scaleX, float scaleY) +static MORTAR_Surface* ConvertAndResizeSurface(MORTAR_Surface* original, bool isUI, float scaleX, float scaleY) { if (!isUI) { - return SDL_ConvertSurface(original, SDL_PIXELFORMAT_RGBA8888); + return MORTAR_ConvertSurface(original, MORTAR_PIXELFORMAT_RGBA8888); } scaleX = std::min(scaleX, 1.0f); @@ -130,18 +130,19 @@ static SDL_Surface* ConvertAndResizeSurface(SDL_Surface* original, bool isUI, fl int paddedW = NearestPowerOfTwoClamp(scaledW); int paddedH = NearestPowerOfTwoClamp(scaledH); - SDL_Surface* padded = SDL_CreateSurface(paddedW, paddedH, SDL_PIXELFORMAT_RGBA8888); + MORTAR_Surface* padded = MORTAR_CreateSurface(paddedW, paddedH, MORTAR_PIXELFORMAT_RGBA8888); if (!padded) { return nullptr; } if (scaleX == 1.0f && scaleY == 1.0f) { - SDL_BlitSurface(original, nullptr, padded, nullptr); + MORTAR_BlitSurface(original, nullptr, padded, nullptr); } else { - SDL_ScaleMode scaleMode = (scaleX >= 1.0f && scaleY >= 1.0f) ? SDL_SCALEMODE_NEAREST : SDL_SCALEMODE_LINEAR; - SDL_Rect dstRect = {0, 0, scaledW, scaledH}; - SDL_BlitSurfaceScaled(original, nullptr, padded, &dstRect, scaleMode); + MORTAR_ScaleMode scaleMode = + (scaleX >= 1.0f && scaleY >= 1.0f) ? MORTAR_SCALEMODE_NEAREST : MORTAR_SCALEMODE_LINEAR; + MORTAR_Rect dstRect = {0, 0, scaledW, scaledH}; + MORTAR_BlitSurfaceScaled(original, nullptr, padded, &dstRect, scaleMode); } return padded; @@ -184,9 +185,15 @@ static void EncodeTextureLayout(const u8* src, u8* dst, int width, int height) } } -static bool ConvertAndUploadTexture(C3D_Tex* tex, SDL_Surface* originalSurface, bool isUI, float scaleX, float scaleY) +static bool ConvertAndUploadTexture( + C3D_Tex* tex, + MORTAR_Surface* originalSurface, + bool isUI, + float scaleX, + float scaleY +) { - SDL_Surface* resized = ConvertAndResizeSurface(originalSurface, isUI, scaleX, scaleY); + MORTAR_Surface* resized = ConvertAndResizeSurface(originalSurface, isUI, scaleX, scaleY); if (!resized) { return false; } @@ -202,7 +209,7 @@ static bool ConvertAndUploadTexture(C3D_Tex* tex, SDL_Surface* originalSurface, params.type = GPU_TEX_2D; if (!C3D_TexInitWithParams(tex, nullptr, params)) { if (resized != originalSurface) { - SDL_DestroySurface(resized); + MORTAR_DestroySurface(resized); } return false; } @@ -210,14 +217,14 @@ static bool ConvertAndUploadTexture(C3D_Tex* tex, SDL_Surface* originalSurface, uint8_t* tiledData = (uint8_t*) malloc(width * height * 4); if (!tiledData) { if (resized != originalSurface) { - SDL_DestroySurface(resized); + MORTAR_DestroySurface(resized); } return false; } EncodeTextureLayout((const u8*) resized->pixels, tiledData, width, height); if (resized != originalSurface) { - SDL_DestroySurface(resized); + MORTAR_DestroySurface(resized); } C3D_TexUpload(tex, tiledData); @@ -237,16 +244,16 @@ static bool ConvertAndUploadTexture(C3D_Tex* tex, SDL_Surface* originalSurface, return true; } -Uint32 Citro3DRenderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, float scaleX, float scaleY) +uint32_t Citro3DRenderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, float scaleX, float scaleY) { auto texture = static_cast(iTexture); auto surface = static_cast(texture->m_surface); - SDL_Surface* originalSurface = surface->m_surface; + MORTAR_Surface* originalSurface = surface->m_surface; int originalW = originalSurface->w; int originalH = originalSurface->h; - for (Uint32 i = 0; i < m_textures.size(); ++i) { + for (uint32_t i = 0; i < m_textures.size(); ++i) { auto& tex = m_textures[i]; if (tex.texture == texture) { if (tex.version != texture->m_version) { @@ -285,7 +292,7 @@ Uint32 Citro3DRenderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, fl return NO_TEXTURE_ID; } - for (Uint32 i = 0; i < m_textures.size(); ++i) { + for (uint32_t i = 0; i < m_textures.size(); ++i) { if (!m_textures[i].texture) { m_textures[i] = std::move(entry); AddTextureDestroyCallback(i, texture); @@ -294,8 +301,8 @@ Uint32 Citro3DRenderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, fl } m_textures.push_back(std::move(entry)); - AddTextureDestroyCallback((Uint32) (m_textures.size() - 1), texture); - return (Uint32) (m_textures.size() - 1); + AddTextureDestroyCallback((uint32_t) (m_textures.size() - 1), texture); + return (uint32_t) (m_textures.size() - 1); } C3DMeshCacheEntry C3DUploadMesh(const MeshGroup& meshGroup) @@ -337,7 +344,7 @@ C3DMeshCacheEntry C3DUploadMesh(const MeshGroup& meshGroup) return cache; } -void Citro3DRenderer::AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh) +void Citro3DRenderer::AddMeshDestroyCallback(uint32_t id, IDirect3DRMMesh* mesh) { auto* ctx = new Citro3DCacheDestroyContext{this, id}; mesh->AddDestroyCallback( @@ -355,9 +362,9 @@ void Citro3DRenderer::AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh) ); } -Uint32 Citro3DRenderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) +uint32_t Citro3DRenderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) { - for (Uint32 i = 0; i < m_meshs.size(); ++i) { + for (uint32_t i = 0; i < m_meshs.size(); ++i) { auto& cache = m_meshs[i]; if (cache.meshGroup == meshGroup) { if (cache.version != meshGroup->version) { @@ -369,7 +376,7 @@ Uint32 Citro3DRenderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGr auto newCache = C3DUploadMesh(*meshGroup); - for (Uint32 i = 0; i < m_meshs.size(); ++i) { + for (uint32_t i = 0; i < m_meshs.size(); ++i) { auto& cache = m_meshs[i]; if (!cache.meshGroup) { cache = std::move(newCache); @@ -379,8 +386,8 @@ Uint32 Citro3DRenderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGr } m_meshs.push_back(std::move(newCache)); - AddMeshDestroyCallback((Uint32) (m_meshs.size() - 1), mesh); - return (Uint32) (m_meshs.size() - 1); + AddMeshDestroyCallback((uint32_t) (m_meshs.size() - 1), mesh); + return (uint32_t) (m_meshs.size() - 1); } void Citro3DRenderer::StartFrame() @@ -551,7 +558,12 @@ void Citro3DRenderer::Flip() g_rendering = false; } -void Citro3DRenderer::Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) +void Citro3DRenderer::Draw2DImage( + uint32_t textureId, + const MORTAR_Rect& srcRect, + const MORTAR_Rect& dstRect, + FColor color +) { C3D_AlphaBlend(GPU_BLEND_ADD, GPU_BLEND_ADD, GPU_ONE, GPU_ONE_MINUS_SRC_ALPHA, GPU_ONE, GPU_ONE_MINUS_SRC_ALPHA); StartFrame(); @@ -635,53 +647,53 @@ void Citro3DRenderer::SetDither(bool dither) { } -void Citro3DRenderer::Download(SDL_Surface* target) +void Citro3DRenderer::Download(MORTAR_Surface* target) { u16 width, height; u8* fb = gfxGetFramebuffer(GFX_BOTTOM, GFX_LEFT, &width, &height); if (!fb) { - SDL_Log("Failed to get framebuffer"); + MORTAR_Log("Failed to get framebuffer"); return; } - SDL_Surface* srcSurface = SDL_CreateSurfaceFrom(width, height, SDL_PIXELFORMAT_BGR24, fb, width * 3); + MORTAR_Surface* srcSurface = MORTAR_CreateSurfaceFrom(width, height, MORTAR_PIXELFORMAT_BGR24, fb, width * 3); if (!srcSurface) { - SDL_Log("SDL_CreateSurfaceFrom failed: %s", SDL_GetError()); + MORTAR_Log("MORTAR_CreateSurfaceFrom failed: %s", MORTAR_GetError()); return; } - SDL_Surface* convertedSurface = SDL_ConvertSurface(srcSurface, target->format); - SDL_DestroySurface(srcSurface); + MORTAR_Surface* convertedSurface = MORTAR_ConvertSurface(srcSurface, target->format); + MORTAR_DestroySurface(srcSurface); if (!convertedSurface) { - SDL_Log("SDL_ConvertSurface failed: %s", SDL_GetError()); + MORTAR_Log("MORTAR_ConvertSurface failed: %s", MORTAR_GetError()); return; } int rotatedWidth = height; int rotatedHeight = width; - SDL_Surface* rotatedSurface = SDL_CreateSurface(rotatedWidth, rotatedHeight, target->format); + MORTAR_Surface* rotatedSurface = MORTAR_CreateSurface(rotatedWidth, rotatedHeight, target->format); if (!rotatedSurface) { - SDL_Log("SDL_CreateSurface failed: %s", SDL_GetError()); - SDL_DestroySurface(convertedSurface); + MORTAR_Log("MORTAR_CreateSurface failed: %s", MORTAR_GetError()); + MORTAR_DestroySurface(convertedSurface); return; } - Uint32* srcPixels = (Uint32*) convertedSurface->pixels; - Uint32* dstPixels = (Uint32*) rotatedSurface->pixels; + uint32_t* srcPixels = (uint32_t*) convertedSurface->pixels; + uint32_t* dstPixels = (uint32_t*) rotatedSurface->pixels; for (int y = 0; y < height; ++y) { for (int x = 0; x < width; ++x) { - Uint32 pixel = srcPixels[y * width + x]; + uint32_t pixel = srcPixels[y * width + x]; int newX = y; int newY = width - 1 - x; dstPixels[newY * rotatedWidth + newX] = pixel; } } - SDL_DestroySurface(convertedSurface); + MORTAR_DestroySurface(convertedSurface); - SDL_Rect srcRect = {0, 0, rotatedSurface->w, rotatedSurface->h}; - SDL_Rect dstRect = {0, 0, target->w, target->h}; - SDL_BlitSurfaceScaled(rotatedSurface, &srcRect, target, &dstRect, SDL_SCALEMODE_NEAREST); + MORTAR_Rect srcRect = {0, 0, rotatedSurface->w, rotatedSurface->h}; + MORTAR_Rect dstRect = {0, 0, target->w, target->h}; + MORTAR_BlitSurfaceScaled(rotatedSurface, &srcRect, target, &dstRect, MORTAR_SCALEMODE_NEAREST); - SDL_DestroySurface(rotatedSurface); + MORTAR_DestroySurface(rotatedSurface); } diff --git a/miniwin/src/d3drm/backends/directx9/actual.cpp b/miniwin/src/d3drm/backends/directx9/actual.cpp index 4ccea210..af4c4e86 100644 --- a/miniwin/src/d3drm/backends/directx9/actual.cpp +++ b/miniwin/src/d3drm/backends/directx9/actual.cpp @@ -2,8 +2,8 @@ #include "structs.h" -#include #include +#include #include #include @@ -86,7 +86,7 @@ void Actual_SetProjection(const Matrix4x4* projection, float front, float back) memcpy(&g_projection, projection, sizeof(Matrix4x4)); } -IDirect3DTexture9* UploadSurfaceToD3DTexture(SDL_Surface* surface) +IDirect3DTexture9* UploadSurfaceToD3DTexture(MORTAR_Surface* surface) { IDirect3DTexture9* texture; @@ -97,7 +97,7 @@ IDirect3DTexture9* UploadSurfaceToD3DTexture(SDL_Surface* surface) return nullptr; } - SDL_Surface* conv = SDL_ConvertSurface(surface, SDL_PIXELFORMAT_ARGB8888); + MORTAR_Surface* conv = MORTAR_ConvertSurface(surface, MORTAR_PIXELFORMAT_ARGB8888); if (!conv) { texture->Release(); return nullptr; @@ -115,7 +115,7 @@ IDirect3DTexture9* UploadSurfaceToD3DTexture(SDL_Surface* surface) } texture->UnlockRect(0); - SDL_DestroySurface(conv); + MORTAR_DestroySurface(conv); return texture; } @@ -373,7 +373,12 @@ uint32_t Actual_Flip() return g_device->Present(nullptr, nullptr, nullptr, nullptr); } -void Actual_Draw2DImage(IDirect3DTexture9* texture, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) +void Actual_Draw2DImage( + IDirect3DTexture9* texture, + const MORTAR_Rect& srcRect, + const MORTAR_Rect& dstRect, + FColor color +) { StartScene(); @@ -439,7 +444,7 @@ void Actual_Draw2DImage(IDirect3DTexture9* texture, const SDL_Rect& srcRect, con g_device->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, quad, sizeof(Vertex)); } -uint32_t Actual_Download(SDL_Surface* target) +uint32_t Actual_Download(MORTAR_Surface* target) { IDirect3DSurface9* backBuffer; HRESULT hr = g_device->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &backBuffer); @@ -475,8 +480,8 @@ uint32_t Actual_Download(SDL_Surface* target) return hr; } - SDL_Surface* srcSurface = - SDL_CreateSurfaceFrom(g_width, g_height, SDL_PIXELFORMAT_ARGB8888, locked.pBits, locked.Pitch); + MORTAR_Surface* srcSurface = + MORTAR_CreateSurfaceFrom(g_width, g_height, MORTAR_PIXELFORMAT_ARGB8888, locked.pBits, locked.Pitch); if (!srcSurface) { sysMemSurface->UnlockRect(); sysMemSurface->Release(); @@ -486,7 +491,7 @@ uint32_t Actual_Download(SDL_Surface* target) float srcAspect = static_cast(g_width) / g_height; float dstAspect = static_cast(target->w) / target->h; - SDL_Rect srcRect; + MORTAR_Rect srcRect; if (srcAspect > dstAspect) { int cropWidth = static_cast(g_height * dstAspect); srcRect = {(g_width - cropWidth) / 2, 0, cropWidth, g_height}; @@ -496,14 +501,14 @@ uint32_t Actual_Download(SDL_Surface* target) srcRect = {0, (g_height - cropHeight) / 2, g_width, cropHeight}; } - if (SDL_BlitSurfaceScaled(srcSurface, &srcRect, target, nullptr, SDL_SCALEMODE_NEAREST)) { - SDL_DestroySurface(srcSurface); + if (MORTAR_BlitSurfaceScaled(srcSurface, &srcRect, target, nullptr, MORTAR_SCALEMODE_NEAREST)) { + MORTAR_DestroySurface(srcSurface); sysMemSurface->UnlockRect(); sysMemSurface->Release(); return E_FAIL; } - SDL_DestroySurface(srcSurface); + MORTAR_DestroySurface(srcSurface); sysMemSurface->UnlockRect(); sysMemSurface->Release(); diff --git a/miniwin/src/d3drm/backends/directx9/actual.h b/miniwin/src/d3drm/backends/directx9/actual.h index bf09cb00..e86cc69a 100644 --- a/miniwin/src/d3drm/backends/directx9/actual.h +++ b/miniwin/src/d3drm/backends/directx9/actual.h @@ -2,7 +2,7 @@ #include "structs.h" -#include +#include #include #include @@ -53,7 +53,7 @@ bool Actual_Initialize(void* hwnd, int width, int height); void Actual_Shutdown(); void Actual_PushLights(const BridgeSceneLight* lightsArray, size_t count); void Actual_SetProjection(const Matrix4x4* projection, float front, float back); -IDirect3DTexture9* UploadSurfaceToD3DTexture(SDL_Surface* surface); +IDirect3DTexture9* UploadSurfaceToD3DTexture(MORTAR_Surface* surface); void ReleaseD3DTexture(IDirect3DTexture9* dxTexture); void ReleaseD3DVertexBuffer(IDirect3DVertexBuffer9* buffer); void ReleaseD3DIndexBuffer(IDirect3DIndexBuffer9* buffer); @@ -78,5 +78,10 @@ void Actual_SubmitDraw( void Actual_Resize(int width, int height, const ViewportTransform& viewportTransform); void Actual_Clear(float r, float g, float b); uint32_t Actual_Flip(); -void Actual_Draw2DImage(IDirect3DTexture9* texture, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color); -uint32_t Actual_Download(SDL_Surface* target); +void Actual_Draw2DImage( + IDirect3DTexture9* texture, + const MORTAR_Rect& srcRect, + const MORTAR_Rect& dstRect, + FColor color +); +uint32_t Actual_Download(MORTAR_Surface* target); diff --git a/miniwin/src/d3drm/backends/directx9/renderer.cpp b/miniwin/src/d3drm/backends/directx9/renderer.cpp index e97dfa17..51afb5f9 100644 --- a/miniwin/src/d3drm/backends/directx9/renderer.cpp +++ b/miniwin/src/d3drm/backends/directx9/renderer.cpp @@ -5,9 +5,9 @@ #include "meshutils.h" #include "structs.h" -#include #include #include +#include #include static_assert(sizeof(Matrix4x4) == sizeof(D3DRMMATRIX4D), "Matrix4x4 is wrong size"); @@ -26,12 +26,8 @@ DirectX9Renderer::DirectX9Renderer(DWORD width, DWORD height) m_height = height; m_virtualWidth = width; m_virtualHeight = height; - Actual_Initialize( - SDL_GetPointerProperty(SDL_GetWindowProperties(DDWindow), SDL_PROP_WINDOW_WIN32_HWND_POINTER, NULL), - width, - height - ); - m_renderedImage = SDL_CreateSurface(m_width, m_height, SDL_PIXELFORMAT_RGBA32); + Actual_Initialize(MORTAR_EXT_GetWindowProperty(DDWindow, MORTAR_WINDOW_PROPERTY_HWND, nullptr), width, height); + m_renderedImage = MORTAR_CreateSurface(m_width, m_height, MORTAR_PIXELFORMAT_RGBA32); } DirectX9Renderer::~DirectX9Renderer() @@ -55,10 +51,10 @@ void DirectX9Renderer::SetProjection(const D3DRMMATRIX4D& projection, D3DVALUE f struct TextureDestroyContextDX9 { DirectX9Renderer* renderer; - Uint32 textureId; + uint32_t textureId; }; -void DirectX9Renderer::AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture) +void DirectX9Renderer::AddTextureDestroyCallback(uint32_t id, IDirect3DRMTexture* texture) { auto* ctx = new TextureDestroyContextDX9{this, id}; texture->AddDestroyCallback( @@ -76,12 +72,12 @@ void DirectX9Renderer::AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* ); } -Uint32 DirectX9Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, float scaleX, float scaleY) +uint32_t DirectX9Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, float scaleX, float scaleY) { auto texture = static_cast(iTexture); auto surface = static_cast(texture->m_surface); - for (Uint32 i = 0; i < m_textures.size(); ++i) { + for (uint32_t i = 0; i < m_textures.size(); ++i) { auto& tex = m_textures[i]; if (tex.texture == texture) { if (tex.version != texture->m_version) { @@ -104,7 +100,7 @@ Uint32 DirectX9Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, f return NO_TEXTURE_ID; } - for (Uint32 i = 0; i < m_textures.size(); ++i) { + for (uint32_t i = 0; i < m_textures.size(); ++i) { auto& tex = m_textures[i]; if (!tex.texture) { tex.texture = texture; @@ -116,8 +112,8 @@ Uint32 DirectX9Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, f } m_textures.push_back({texture, texture->m_version, newTex}); - AddTextureDestroyCallback((Uint32) (m_textures.size() - 1), texture); - return (Uint32) (m_textures.size() - 1); + AddTextureDestroyCallback((uint32_t) (m_textures.size() - 1), texture); + return (uint32_t) (m_textures.size() - 1); } D3D9MeshCacheEntry UploadD3D9Mesh(const MeshGroup& meshGroup) @@ -165,10 +161,10 @@ D3D9MeshCacheEntry UploadD3D9Mesh(const MeshGroup& meshGroup) struct D3D9MeshDestroyContext { DirectX9Renderer* renderer; - Uint32 id; + uint32_t id; }; -void DirectX9Renderer::AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh) +void DirectX9Renderer::AddMeshDestroyCallback(uint32_t id, IDirect3DRMMesh* mesh) { auto* ctx = new D3D9MeshDestroyContext{this, id}; mesh->AddDestroyCallback( @@ -191,9 +187,9 @@ void DirectX9Renderer::AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh) ); } -Uint32 DirectX9Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) +uint32_t DirectX9Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) { - for (Uint32 i = 0; i < m_meshs.size(); ++i) { + for (uint32_t i = 0; i < m_meshs.size(); ++i) { auto& cache = m_meshs[i]; if (cache.meshGroup == meshGroup) { if (cache.version != meshGroup->version) { @@ -205,7 +201,7 @@ Uint32 DirectX9Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshG auto newCache = UploadD3D9Mesh(*meshGroup); - for (Uint32 i = 0; i < m_meshs.size(); ++i) { + for (uint32_t i = 0; i < m_meshs.size(); ++i) { if (!m_meshs[i].meshGroup) { m_meshs[i] = std::move(newCache); return i; @@ -213,7 +209,7 @@ Uint32 DirectX9Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshG } m_meshs.push_back(std::move(newCache)); - return static_cast(m_meshs.size() - 1); + return static_cast(m_meshs.size() - 1); } HRESULT DirectX9Renderer::BeginFrame() @@ -273,7 +269,12 @@ void DirectX9Renderer::Flip() Actual_Flip(); } -void DirectX9Renderer::Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) +void DirectX9Renderer::Draw2DImage( + uint32_t textureId, + const MORTAR_Rect& srcRect, + const MORTAR_Rect& dstRect, + FColor color +) { Actual_Draw2DImage(m_textures[textureId].dxTexture, srcRect, dstRect, color); } @@ -282,7 +283,7 @@ void DirectX9Renderer::SetDither(bool dither) { } -void DirectX9Renderer::Download(SDL_Surface* target) +void DirectX9Renderer::Download(MORTAR_Surface* target) { Actual_Download(target); } diff --git a/miniwin/src/d3drm/backends/gxm/gxm_context.cpp b/miniwin/src/d3drm/backends/gxm/gxm_context.cpp index 1e13d1d0..f686cc0f 100644 --- a/miniwin/src/d3drm/backends/gxm/gxm_context.cpp +++ b/miniwin/src/d3drm/backends/gxm/gxm_context.cpp @@ -5,7 +5,7 @@ #include "tlsf.h" #include "utils.h" -#include +#include #include #include #include @@ -29,7 +29,7 @@ static void display_callback(const void* callback_data) const GXMDisplayData* display_data = (const GXMDisplayData*) callback_data; SceDisplayFrameBuf framebuf; - SDL_memset(&framebuf, 0x00, sizeof(SceDisplayFrameBuf)); + MORTAR_memset(&framebuf, 0x00, sizeof(SceDisplayFrameBuf)); framebuf.size = sizeof(SceDisplayFrameBuf); framebuf.base = display_data->address; framebuf.pitch = VITA_GXM_SCREEN_STRIDE; @@ -86,7 +86,7 @@ int gxm_library_init() #endif SceGxmInitializeParams initializeParams; - SDL_memset(&initializeParams, 0, sizeof(SceGxmInitializeParams)); + MORTAR_memset(&initializeParams, 0, sizeof(SceGxmInitializeParams)); initializeParams.flags = 0; initializeParams.displayQueueMaxPendingCount = VITA_GXM_PENDING_SWAPS; initializeParams.displayQueueCallback = display_callback; @@ -95,7 +95,7 @@ int gxm_library_init() int err = sceGxmInitialize(&initializeParams); if (err != 0) { - SDL_LogError(SDL_LOG_CATEGORY_RENDER, "gxm init failed: %d", err); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "gxm init failed: %d", err); return err; } gxm_initialized = true; @@ -115,7 +115,7 @@ void GXMContext::init_cdram_allocator() &this->cdramUID, "cdram_pool" ); - this->cdramPool = SDL_malloc(tlsf_size()); + this->cdramPool = MORTAR_malloc(tlsf_size()); tlsf_create(this->cdramPool); tlsf_add_pool(this->cdramPool, this->cdramMem, CDRAM_POOL_SIZE); } @@ -164,8 +164,8 @@ int GXMContext::init_context() // create context SceGxmContextParams contextParams; - memset(&contextParams, 0, sizeof(SceGxmContextParams)); - contextParams.hostMem = SDL_malloc(SCE_GXM_MINIMUM_CONTEXT_HOST_MEM_SIZE); + MORTAR_memset(&contextParams, 0, sizeof(SceGxmContextParams)); + contextParams.hostMem = MORTAR_malloc(SCE_GXM_MINIMUM_CONTEXT_HOST_MEM_SIZE); contextParams.hostMemSize = SCE_GXM_MINIMUM_CONTEXT_HOST_MEM_SIZE; contextParams.vdmRingBufferMem = this->vdmRingBuffer; contextParams.vdmRingBufferMemSize = SCE_GXM_DEFAULT_VDM_RING_BUFFER_SIZE; @@ -203,7 +203,7 @@ int GXMContext::init_context() ); SceGxmShaderPatcherParams patcherParams; - memset(&patcherParams, 0, sizeof(SceGxmShaderPatcherParams)); + MORTAR_memset(&patcherParams, 0, sizeof(SceGxmShaderPatcherParams)); patcherParams.userData = NULL; patcherParams.hostAllocCallback = &patcher_host_alloc; patcherParams.hostFreeCallback = &patcher_host_free; @@ -248,7 +248,7 @@ int GXMContext::create_display_buffers(SceGxmMultisampleMode msaaMode) // render target SceGxmRenderTargetParams renderTargetParams; - memset(&renderTargetParams, 0, sizeof(SceGxmRenderTargetParams)); + MORTAR_memset(&renderTargetParams, 0, sizeof(SceGxmRenderTargetParams)); renderTargetParams.flags = 0; renderTargetParams.width = VITA_GXM_SCREEN_WIDTH; renderTargetParams.height = VITA_GXM_SCREEN_HEIGHT; @@ -639,7 +639,7 @@ void GXMContext::destroy() vita_mem_free(this->fragmentRingBufferUid); vita_mem_free(this->vertexRingBufferUid); vita_mem_free(this->vdmRingBufferUid); - SDL_free(this->contextHostMem); + MORTAR_free(this->contextHostMem); } void GXMContext::swap_display() @@ -650,7 +650,7 @@ void GXMContext::swap_display() } SceCommonDialogUpdateParam updateParam; - SDL_zero(updateParam); + MORTAR_zero(updateParam); updateParam.renderTarget.colorFormat = VITA_GXM_COLOR_FORMAT; updateParam.renderTarget.surfaceType = SCE_GXM_COLOR_SURFACE_LINEAR; updateParam.renderTarget.width = VITA_GXM_SCREEN_WIDTH; diff --git a/miniwin/src/d3drm/backends/gxm/gxm_memory.cpp b/miniwin/src/d3drm/backends/gxm/gxm_memory.cpp index 01313d0a..8245017f 100644 --- a/miniwin/src/d3drm/backends/gxm/gxm_memory.cpp +++ b/miniwin/src/d3drm/backends/gxm/gxm_memory.cpp @@ -3,14 +3,14 @@ #include "tlsf.h" #include "utils.h" -#include +#include #include #include #include void* patcher_host_alloc(void* user_data, unsigned int size) { - void* mem = SDL_malloc(size); + void* mem = MORTAR_malloc(size); (void) user_data; return mem; } @@ -18,7 +18,7 @@ void* patcher_host_alloc(void* user_data, unsigned int size) void patcher_host_free(void* user_data, void* mem) { (void) user_data; - SDL_free(mem); + MORTAR_free(mem); } void* vita_mem_alloc(unsigned int type, size_t size, size_t alignment, int attribs, SceUID* uid, const char* name) @@ -38,7 +38,7 @@ void* vita_mem_alloc(unsigned int type, size_t size, size_t alignment, int attri *uid = sceKernelAllocMemBlock(name, type, size, NULL); if (*uid < 0) { - SDL_Log("sceKernelAllocMemBlock: 0x%x", *uid); + MORTAR_Log("sceKernelAllocMemBlock: 0x%x", *uid); return NULL; } @@ -47,7 +47,7 @@ void* vita_mem_alloc(unsigned int type, size_t size, size_t alignment, int attri } if (sceGxmMapMemory(mem, size, (SceGxmMemoryAttribFlags) attribs) < 0) { - SDL_Log("sceGxmMapMemory 0x%x 0x%x %d failed", mem, size, attribs); + MORTAR_Log("sceGxmMapMemory 0x%x 0x%x %d failed", mem, size, attribs); return NULL; } diff --git a/miniwin/src/d3drm/backends/gxm/gxm_memory.h b/miniwin/src/d3drm/backends/gxm/gxm_memory.h index f169603d..97819d3a 100644 --- a/miniwin/src/d3drm/backends/gxm/gxm_memory.h +++ b/miniwin/src/d3drm/backends/gxm/gxm_memory.h @@ -1,6 +1,6 @@ #pragma once -#include +#include #include void* patcher_host_alloc(void* user_data, unsigned int size); diff --git a/miniwin/src/d3drm/backends/gxm/gxm_renderer.cpp b/miniwin/src/d3drm/backends/gxm/gxm_renderer.cpp index efb25bdd..96af9bd2 100644 --- a/miniwin/src/d3drm/backends/gxm/gxm_renderer.cpp +++ b/miniwin/src/d3drm/backends/gxm/gxm_renderer.cpp @@ -7,8 +7,8 @@ #include "tlsf.h" #include "utils.h" -#include #include +#include #include #include #include @@ -45,7 +45,7 @@ Direct3DRMRenderer* GXMRenderer::Create(DWORD width, DWORD height, DWORD msaaSam } if (!gxm) { - gxm = (GXMContext*) SDL_malloc(sizeof(GXMContext)); + gxm = (GXMContext*) MORTAR_malloc(sizeof(GXMContext)); memset(gxm, 0, sizeof(GXMContext)); } ret = SCE_ERR(gxm->init, msaaMode); @@ -259,7 +259,7 @@ GXMRenderer::~GXMRenderer() void GXMRenderer::PushLights(const SceneLight* lightsArray, size_t count) { if (count > 3) { - SDL_Log("Unsupported number of lights (%d)", static_cast(count)); + MORTAR_Log("Unsupported number of lights (%d)", static_cast(count)); count = 3; } @@ -277,10 +277,10 @@ void GXMRenderer::SetProjection(const D3DRMMATRIX4D& projection, D3DVALUE front, struct TextureDestroyContextGXM { GXMRenderer* renderer; - Uint32 textureId; + uint32_t textureId; }; -void GXMRenderer::AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture) +void GXMRenderer::AddTextureDestroyCallback(uint32_t id, IDirect3DRMTexture* texture) { auto* ctx = new TextureDestroyContextGXM{this, id}; texture->AddDestroyCallback( @@ -335,7 +335,7 @@ static int nextPowerOf2(int n) } static void convertTextureMetadata( - SDL_Surface* surface, + MORTAR_Surface* surface, bool isUi, bool* supportedFormat, SceGxmTextureFormat* gxmTextureFormat, @@ -351,7 +351,7 @@ static void convertTextureMetadata( *mipLevels = 1; switch (surface->format) { - case SDL_PIXELFORMAT_INDEX8: { + case MORTAR_PIXELFORMAT_INDEX8: { *supportedFormat = true; *gxmTextureFormat = SCE_GXM_TEXTURE_FORMAT_P8_ABGR; *textureAlignment = SCE_GXM_PALETTE_ALIGNMENT; @@ -362,7 +362,7 @@ static void convertTextureMetadata( paletteSize = 256 * 4; // palette break; } - case SDL_PIXELFORMAT_ABGR8888: { + case MORTAR_PIXELFORMAT_ABGR8888: { *supportedFormat = true; *gxmTextureFormat = SCE_GXM_TEXTURE_FORMAT_U8U8U8U8_ABGR; *textureAlignment = SCE_GXM_TEXTURE_ALIGNMENT; @@ -412,7 +412,7 @@ static void convertTextureMetadata( *textureSize = totalSize; } -void copySurfaceToGxmARGB888(SDL_Surface* src, uint8_t* textureData, size_t dstStride, size_t mipLevels) +void copySurfaceToGxmARGB888(MORTAR_Surface* src, uint8_t* textureData, size_t dstStride, size_t mipLevels) { uint8_t* currentLevelData = textureData; uint32_t currentLevelWidth = src->w; @@ -428,8 +428,8 @@ void copySurfaceToGxmARGB888(SDL_Surface* src, uint8_t* textureData, size_t dstS } for (size_t i = 1; i < mipLevels; ++i) { - uint32_t currentLevelSrcStride = SDL_max(currentLevelWidth, 8) * bytesPerPixel; - uint32_t currentLevelDestStride = SDL_max((currentLevelWidth / 2), 8) * bytesPerPixel; + uint32_t currentLevelSrcStride = MORTAR_max(currentLevelWidth, 8) * bytesPerPixel; + uint32_t currentLevelDestStride = MORTAR_max((currentLevelWidth / 2), 8) * bytesPerPixel; uint8_t* nextLevelData = currentLevelData + (currentLevelSrcStride * currentLevelHeight); sceGxmTransferDownscale( @@ -458,7 +458,7 @@ void copySurfaceToGxmARGB888(SDL_Surface* src, uint8_t* textureData, size_t dstS void copySurfaceToGxmIndexed8( DirectDrawSurfaceImpl* surface, - SDL_Surface* src, + MORTAR_Surface* src, uint8_t* textureData, size_t dstStride, uint8_t* paletteData, @@ -486,8 +486,8 @@ void copySurfaceToGxmIndexed8( } for (size_t i = 1; i < mipLevels; ++i) { - uint32_t currentLevelSrcStride = SDL_max(currentLevelWidth, 8) * bytesPerPixel; - uint32_t currentLevelDestStride = SDL_max((currentLevelWidth / 2), 8) * bytesPerPixel; + uint32_t currentLevelSrcStride = MORTAR_max(currentLevelWidth, 8) * bytesPerPixel; + uint32_t currentLevelDestStride = MORTAR_max((currentLevelWidth / 2), 8) * bytesPerPixel; uint8_t* nextLevelData = currentLevelData + (currentLevelSrcStride * currentLevelHeight); sceGxmTransferDownscale( @@ -524,28 +524,29 @@ void copySurfaceToGxm( size_t mipLevels ) { - SDL_Surface* src = surface->m_surface; + MORTAR_Surface* src = surface->m_surface; switch (src->format) { - case SDL_PIXELFORMAT_ABGR8888: { + case MORTAR_PIXELFORMAT_ABGR8888: { copySurfaceToGxmARGB888(src, textureData, dstStride, mipLevels); break; } - case SDL_PIXELFORMAT_INDEX8: { + case MORTAR_PIXELFORMAT_INDEX8: { copySurfaceToGxmIndexed8(surface, src, textureData, dstStride, textureData + paletteOffset, mipLevels); break; } default: { - DEBUG_ONLY_PRINTF("unsupported format %d\n", SDL_GetPixelFormatName(src->format)); - SDL_Surface* dst = SDL_CreateSurfaceFrom(src->w, src->h, SDL_PIXELFORMAT_ABGR8888, textureData, src->w * 4); - SDL_BlitSurface(src, nullptr, dst, nullptr); - SDL_DestroySurface(dst); + DEBUG_ONLY_PRINTF("unsupported format %d\n", MORTAR_GetPixelFormatName(src->format)); + MORTAR_Surface* dst = + MORTAR_CreateSurfaceFrom(src->w, src->h, MORTAR_PIXELFORMAT_ABGR8888, textureData, src->w * 4); + MORTAR_BlitSurface(src, nullptr, dst, nullptr); + MORTAR_DestroySurface(dst); break; } } } -Uint32 GXMRenderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUi, float scaleX, float scaleY) +uint32_t GXMRenderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUi, float scaleX, float scaleY) { auto texture = static_cast(iTexture); auto surface = static_cast(texture->m_surface); @@ -577,7 +578,7 @@ Uint32 GXMRenderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUi, float return NO_TEXTURE_ID; } - for (Uint32 i = 0; i < m_textures.size(); ++i) { + for (uint32_t i = 0; i < m_textures.size(); ++i) { auto& tex = m_textures[i]; if (tex.texture == texture) { if (tex.version != texture->m_version) { @@ -593,7 +594,7 @@ Uint32 GXMRenderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUi, float DEBUG_ONLY_PRINTF( "Create Texture %s w=%d h=%d s=%d size=%d align=%d mips=%d\n", - SDL_GetPixelFormatName(surface->m_surface->format), + MORTAR_GetPixelFormatName(surface->m_surface->format), textureWidth, textureHeight, textureStride, @@ -632,7 +633,7 @@ Uint32 GXMRenderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUi, float sceGxmTextureSetPalette(&gxmTexture, textureData + paletteOffset); } - for (Uint32 i = 0; i < m_textures.size(); ++i) { + for (uint32_t i = 0; i < m_textures.size(); ++i) { auto& tex = m_textures[i]; if (!tex.texture) { memset(&tex, 0, sizeof(tex)); @@ -652,7 +653,7 @@ Uint32 GXMRenderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUi, float tex.gxmTexture = gxmTexture; tex.notification = &this->fragmentNotifications[this->currentFragmentBufferIndex]; m_textures.push_back(tex); - Uint32 textureId = (Uint32) (m_textures.size() - 1); + uint32_t textureId = (uint32_t) (m_textures.size() - 1); AddTextureDestroyCallback(textureId, texture); return textureId; } @@ -731,10 +732,10 @@ GXMMeshCacheEntry GXMRenderer::GXMUploadMesh(const MeshGroup& meshGroup) struct GXMMeshDestroyContext { GXMRenderer* renderer; - Uint32 id; + uint32_t id; }; -void GXMRenderer::AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh) +void GXMRenderer::AddMeshDestroyCallback(uint32_t id, IDirect3DRMMesh* mesh) { auto* ctx = new GXMMeshDestroyContext{this, id}; mesh->AddDestroyCallback( @@ -753,9 +754,9 @@ void GXMRenderer::AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh) ); } -Uint32 GXMRenderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) +uint32_t GXMRenderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) { - for (Uint32 i = 0; i < m_meshes.size(); ++i) { + for (uint32_t i = 0; i < m_meshes.size(); ++i) { auto& cache = m_meshes[i]; if (cache.meshGroup == meshGroup) { if (cache.version != meshGroup->version) { @@ -767,7 +768,7 @@ Uint32 GXMRenderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) auto newCache = this->GXMUploadMesh(*meshGroup); - for (Uint32 i = 0; i < m_meshes.size(); ++i) { + for (uint32_t i = 0; i < m_meshes.size(); ++i) { auto& cache = m_meshes[i]; if (!cache.meshGroup) { cache = std::move(newCache); @@ -777,8 +778,8 @@ Uint32 GXMRenderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) } m_meshes.push_back(std::move(newCache)); - AddMeshDestroyCallback((Uint32) (m_meshes.size() - 1), mesh); - return (Uint32) (m_meshes.size() - 1); + AddMeshDestroyCallback((uint32_t) (m_meshes.size() - 1), mesh); + return (uint32_t) (m_meshes.size() - 1); } bool razor_live_started = false; @@ -994,7 +995,7 @@ void GXMRenderer::Flip() gxm->swap_display(); } -void GXMRenderer::Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) +void GXMRenderer::Draw2DImage(uint32_t textureId, const MORTAR_Rect& srcRect, const MORTAR_Rect& dstRect, FColor color) { this->StartScene(); if (!this->cleared) { @@ -1081,21 +1082,21 @@ void GXMRenderer::SetDither(bool dither) { } -void GXMRenderer::Download(SDL_Surface* target) +void GXMRenderer::Download(MORTAR_Surface* target) { - SDL_Rect srcRect = { + MORTAR_Rect srcRect = { static_cast(m_viewportTransform.offsetX), static_cast(m_viewportTransform.offsetY), static_cast(target->w * m_viewportTransform.scale), static_cast(target->h * m_viewportTransform.scale), }; - SDL_Surface* src = SDL_CreateSurfaceFrom( + MORTAR_Surface* src = MORTAR_CreateSurfaceFrom( VITA_GXM_SCREEN_WIDTH, VITA_GXM_SCREEN_HEIGHT, - SDL_PIXELFORMAT_ABGR8888, + MORTAR_PIXELFORMAT_ABGR8888, gxm->displayBuffers[gxm->frontBufferIndex], VITA_GXM_SCREEN_STRIDE * 4 ); - SDL_BlitSurfaceScaled(src, &srcRect, target, nullptr, SDL_SCALEMODE_NEAREST); - SDL_DestroySurface(src); + MORTAR_BlitSurfaceScaled(src, &srcRect, target, nullptr, MORTAR_SCALEMODE_NEAREST); + MORTAR_DestroySurface(src); } diff --git a/miniwin/src/d3drm/backends/gxm/utils.h b/miniwin/src/d3drm/backends/gxm/utils.h index 18fe5dc1..f263fbc2 100644 --- a/miniwin/src/d3drm/backends/gxm/utils.h +++ b/miniwin/src/d3drm/backends/gxm/utils.h @@ -1,6 +1,6 @@ #pragma once -#include +#include #include #include @@ -34,7 +34,7 @@ #define GET_SHADER_PARAM(var, gxp, name, ret) \ const SceGxmProgramParameter* var = sceGxmProgramFindParameterByName(gxp, name); \ if (!var) { \ - SDL_Log("Failed to find param %s", name); \ + MORTAR_Log("Failed to find param %s", name); \ return ret; \ } diff --git a/miniwin/src/d3drm/backends/opengl1/actual.cpp b/miniwin/src/d3drm/backends/opengl1/actual.cpp index 4b83daff..831ddda2 100644 --- a/miniwin/src/d3drm/backends/opengl1/actual.cpp +++ b/miniwin/src/d3drm/backends/opengl1/actual.cpp @@ -4,10 +4,10 @@ #include "structs.h" -#include -#include #include #include +#include +#include #include // GL extension API functions. @@ -26,14 +26,14 @@ void GL11_InitState() void GL11_LoadExtensions() { - g_useVBOs = SDL_GL_ExtensionSupported("GL_ARB_vertex_buffer_object"); + g_useVBOs = MORTAR_GL_ExtensionSupported("GL_ARB_vertex_buffer_object"); if (g_useVBOs) { // Load the required GL function pointers. - mwglGenBuffers = (PFNGLGENBUFFERSPROC) SDL_GL_GetProcAddress("glGenBuffersARB"); - mwglBindBuffer = (PFNGLBINDBUFFERPROC) SDL_GL_GetProcAddress("glBindBufferARB"); - mwglBufferData = (PFNGLBUFFERDATAPROC) SDL_GL_GetProcAddress("glBufferDataARB"); - mwglDeleteBuffers = (PFNGLDELETEBUFFERSPROC) SDL_GL_GetProcAddress("glDeleteBuffersARB"); + mwglGenBuffers = (PFNGLGENBUFFERSPROC) MORTAR_GL_GetProcAddress("glGenBuffersARB"); + mwglBindBuffer = (PFNGLBINDBUFFERPROC) MORTAR_GL_GetProcAddress("glBindBufferARB"); + mwglBufferData = (PFNGLBUFFERDATAPROC) MORTAR_GL_GetProcAddress("glBufferDataARB"); + mwglDeleteBuffers = (PFNGLDELETEBUFFERSPROC) MORTAR_GL_GetProcAddress("glDeleteBuffersARB"); } } @@ -293,8 +293,8 @@ void GL11_Clear(float r, float g, float b) void GL11_Draw2DImage( const GLTextureCacheEntry* cache, - const SDL_Rect& srcRect, - const SDL_Rect& dstRect, + const MORTAR_Rect& srcRect, + const MORTAR_Rect& dstRect, const FColor& color, float left, float right, @@ -359,7 +359,7 @@ void GL11_Draw2DImage( glMatrixMode(GL_PROJECTION); } -void GL11_Download(SDL_Surface* target) +void GL11_Download(MORTAR_Surface* target) { glFinish(); glReadPixels(0, 0, target->w, target->h, GL_RGBA, GL_UNSIGNED_BYTE, target->pixels); diff --git a/miniwin/src/d3drm/backends/opengl1/actual.h b/miniwin/src/d3drm/backends/opengl1/actual.h index 232fc88d..7d090b8f 100644 --- a/miniwin/src/d3drm/backends/opengl1/actual.h +++ b/miniwin/src/d3drm/backends/opengl1/actual.h @@ -2,7 +2,7 @@ #include "structs.h" -#include +#include #include #include @@ -37,7 +37,7 @@ struct GL11_BridgeSceneVertex { struct GLTextureCacheEntry { IDirect3DRMTexture* texture; - Uint32 version; + uint32_t version; GLuint glTextureId; float width; float height; @@ -81,8 +81,8 @@ void GL11_Resize(int width, int height); void GL11_Clear(float r, float g, float b); void GL11_Draw2DImage( const GLTextureCacheEntry* cache, - const SDL_Rect& srcRect, - const SDL_Rect& dstRect, + const MORTAR_Rect& srcRect, + const MORTAR_Rect& dstRect, const FColor& color, float left, float right, @@ -90,4 +90,4 @@ void GL11_Draw2DImage( float top ); void GL11_SetDither(bool dither); -void GL11_Download(SDL_Surface* target); +void GL11_Download(MORTAR_Surface* target); diff --git a/miniwin/src/d3drm/backends/opengl1/renderer.cpp b/miniwin/src/d3drm/backends/opengl1/renderer.cpp index 2d4c14c9..1158faf2 100644 --- a/miniwin/src/d3drm/backends/opengl1/renderer.cpp +++ b/miniwin/src/d3drm/backends/opengl1/renderer.cpp @@ -5,9 +5,9 @@ #include "mathutils.h" #include "meshutils.h" -#include #include #include +#include #include static_assert(sizeof(Matrix4x4) == sizeof(D3DRMMATRIX4D), "Matrix4x4 is wrong size"); @@ -19,34 +19,34 @@ static_assert(sizeof(GL11_BridgeSceneVertex) == sizeof(D3DRMVERTEX), "GL11_Bridg Direct3DRMRenderer* OpenGL1Renderer::Create(DWORD width, DWORD height, DWORD msaaSamples) { // We have to reset the attributes here after having enumerated the - // OpenGL ES 2.0 renderer, or else SDL gets very confused by SDL_GL_DEPTH_SIZE + // OpenGL ES 2.0 renderer, or else SDL gets very confused by MORTAR_GL_DEPTH_SIZE // call below when on an EGL-based backend, and crashes with EGL_BAD_MATCH. - SDL_GL_ResetAttributes(); + MORTAR_GL_ResetAttributes(); // But ResetAttributes resets it to 16. - SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_COMPATIBILITY); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 1); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1); + MORTAR_GL_SetAttribute(MORTAR_GL_DEPTH_SIZE, 24); + MORTAR_GL_SetAttribute(MORTAR_GL_CONTEXT_PROFILE_MASK, MORTAR_GL_CONTEXT_PROFILE_COMPATIBILITY); + MORTAR_GL_SetAttribute(MORTAR_GL_CONTEXT_MAJOR_VERSION, 1); + MORTAR_GL_SetAttribute(MORTAR_GL_CONTEXT_MINOR_VERSION, 1); if (msaaSamples > 1) { - SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); - SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, msaaSamples); + MORTAR_GL_SetAttribute(MORTAR_GL_MULTISAMPLEBUFFERS, 1); + MORTAR_GL_SetAttribute(MORTAR_GL_MULTISAMPLESAMPLES, msaaSamples); } if (!DDWindow) { - SDL_Log("No window handler"); + MORTAR_Log("No window handler"); return nullptr; } - SDL_GLContext context = SDL_GL_CreateContext(DDWindow); + MORTAR_GLContext context = MORTAR_GL_CreateContext(DDWindow); if (!context) { - SDL_Log("SDL_GL_CreateContext: %s", SDL_GetError()); + MORTAR_Log("MORTAR_GL_CreateContext: %s", MORTAR_GetError()); return nullptr; } - if (!SDL_GL_MakeCurrent(DDWindow, context)) { - SDL_GL_DestroyContext(context); - SDL_Log("SDL_GL_MakeCurrent: %s", SDL_GetError()); + if (!MORTAR_GL_MakeCurrent(DDWindow, context)) { + MORTAR_GL_DestroyContext(context); + MORTAR_Log("MORTAR_GL_MakeCurrent: %s", MORTAR_GetError()); return nullptr; } @@ -55,28 +55,28 @@ Direct3DRMRenderer* OpenGL1Renderer::Create(DWORD width, DWORD height, DWORD msa return new OpenGL1Renderer(width, height, context); } -OpenGL1Renderer::OpenGL1Renderer(DWORD width, DWORD height, SDL_GLContext context) : m_context(context) +OpenGL1Renderer::OpenGL1Renderer(DWORD width, DWORD height, MORTAR_GLContext context) : m_context(context) { m_width = width; m_height = height; m_virtualWidth = width; m_virtualHeight = height; - m_renderedImage = SDL_CreateSurface(m_width, m_height, SDL_PIXELFORMAT_RGBA32); + m_renderedImage = MORTAR_CreateSurface(m_width, m_height, MORTAR_PIXELFORMAT_RGBA32); GL11_LoadExtensions(); - m_useVBOs = SDL_GL_ExtensionSupported("GL_ARB_vertex_buffer_object"); - m_useNPOT = SDL_GL_ExtensionSupported("GL_OES_texture_npot"); + m_useVBOs = MORTAR_GL_ExtensionSupported("GL_ARB_vertex_buffer_object"); + m_useNPOT = MORTAR_GL_ExtensionSupported("GL_OES_texture_npot"); } OpenGL1Renderer::~OpenGL1Renderer() { - SDL_DestroySurface(m_renderedImage); - SDL_GL_DestroyContext(m_context); + MORTAR_DestroySurface(m_renderedImage); + MORTAR_GL_DestroyContext(m_context); } void OpenGL1Renderer::PushLights(const SceneLight* lightsArray, size_t count) { if (count > 8) { - SDL_Log("Unsupported number of lights (%d)", static_cast(count)); + MORTAR_Log("Unsupported number of lights (%d)", static_cast(count)); count = 8; } @@ -94,10 +94,10 @@ void OpenGL1Renderer::SetProjection(const D3DRMMATRIX4D& projection, D3DVALUE fr struct TextureDestroyContextGL { OpenGL1Renderer* renderer; - Uint32 textureId; + uint32_t textureId; }; -void OpenGL1Renderer::AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture) +void OpenGL1Renderer::AddTextureDestroyCallback(uint32_t id, IDirect3DRMTexture* texture) { auto* ctx = new TextureDestroyContextGL{this, id}; texture->AddDestroyCallback( @@ -124,18 +124,18 @@ static int NextPowerOfTwo(int v) return power; } -static Uint32 UploadTextureData(SDL_Surface* src, bool useNPOT, bool isUI, float scaleX, float scaleY) +static uint32_t UploadTextureData(MORTAR_Surface* src, bool useNPOT, bool isUI, float scaleX, float scaleY) { - SDL_Surface* working = src; - if (src->format != SDL_PIXELFORMAT_RGBA32) { - working = SDL_ConvertSurface(src, SDL_PIXELFORMAT_RGBA32); + MORTAR_Surface* working = src; + if (src->format != MORTAR_PIXELFORMAT_RGBA32) { + working = MORTAR_ConvertSurface(src, MORTAR_PIXELFORMAT_RGBA32); if (!working) { - SDL_Log("SDL_ConvertSurface failed: %s", SDL_GetError()); + MORTAR_Log("MORTAR_ConvertSurface failed: %s", MORTAR_GetError()); return NO_TEXTURE_ID; } } - SDL_Surface* finalSurface = working; + MORTAR_Surface* finalSurface = working; int newW = working->w; int newH = working->h; @@ -152,39 +152,40 @@ static Uint32 UploadTextureData(SDL_Surface* src, bool useNPOT, bool isUI, float } if (newW != working->w || newH != working->h) { - SDL_Surface* resized = SDL_CreateSurface(newW, newH, working->format); + MORTAR_Surface* resized = MORTAR_CreateSurface(newW, newH, working->format); if (!resized) { - SDL_Log("SDL_CreateSurface (resize) failed: %s", SDL_GetError()); + MORTAR_Log("MORTAR_CreateSurface (resize) failed: %s", MORTAR_GetError()); if (working != src) { - SDL_DestroySurface(working); + MORTAR_DestroySurface(working); } return NO_TEXTURE_ID; } - SDL_Rect srcRect = {0, 0, working->w, working->h}; - SDL_Rect dstRect = {0, 0, newW, newH}; - SDL_BlitSurfaceScaled(working, &srcRect, resized, &dstRect, SDL_SCALEMODE_NEAREST); + MORTAR_Rect srcRect = {0, 0, working->w, working->h}; + MORTAR_Rect dstRect = {0, 0, newW, newH}; + MORTAR_BlitSurfaceScaled(working, &srcRect, resized, &dstRect, MORTAR_SCALEMODE_NEAREST); if (working != src) { - SDL_DestroySurface(working); + MORTAR_DestroySurface(working); } finalSurface = resized; } - Uint32 texId = GL11_UploadTextureData(finalSurface->pixels, finalSurface->w, finalSurface->h, isUI, scaleX, scaleY); + uint32_t texId = + GL11_UploadTextureData(finalSurface->pixels, finalSurface->w, finalSurface->h, isUI, scaleX, scaleY); if (finalSurface != src) { - SDL_DestroySurface(finalSurface); + MORTAR_DestroySurface(finalSurface); } return texId; } -Uint32 OpenGL1Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, float scaleX, float scaleY) +uint32_t OpenGL1Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, float scaleX, float scaleY) { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); auto texture = static_cast(iTexture); auto surface = static_cast(texture->m_surface); - for (Uint32 i = 0; i < m_textures.size(); ++i) { + for (uint32_t i = 0; i < m_textures.size(); ++i) { auto& tex = m_textures[i]; if (tex.texture == texture) { if (tex.version != texture->m_version) { @@ -200,7 +201,7 @@ Uint32 OpenGL1Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, fl GLuint texId = UploadTextureData(surface->m_surface, m_useNPOT, isUI, scaleX, scaleY); - for (Uint32 i = 0; i < m_textures.size(); ++i) { + for (uint32_t i = 0; i < m_textures.size(); ++i) { auto& tex = m_textures[i]; if (!tex.texture) { tex.texture = texture; @@ -220,8 +221,8 @@ Uint32 OpenGL1Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, fl static_cast(surface->m_surface->w), static_cast(surface->m_surface->h)} ); - AddTextureDestroyCallback((Uint32) (m_textures.size() - 1), texture); - return (Uint32) (m_textures.size() - 1); + AddTextureDestroyCallback((uint32_t) (m_textures.size() - 1), texture); + return (uint32_t) (m_textures.size() - 1); } GLMeshCacheEntry GLUploadMesh(const MeshGroup& meshGroup, bool useVBOs) @@ -272,10 +273,10 @@ GLMeshCacheEntry GLUploadMesh(const MeshGroup& meshGroup, bool useVBOs) struct GLMeshDestroyContext { OpenGL1Renderer* renderer; - Uint32 id; + uint32_t id; }; -void OpenGL1Renderer::AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh) +void OpenGL1Renderer::AddMeshDestroyCallback(uint32_t id, IDirect3DRMMesh* mesh) { auto* ctx = new GLMeshDestroyContext{this, id}; mesh->AddDestroyCallback( @@ -290,9 +291,9 @@ void OpenGL1Renderer::AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh) ); } -Uint32 OpenGL1Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) +uint32_t OpenGL1Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) { - for (Uint32 i = 0; i < m_meshs.size(); ++i) { + for (uint32_t i = 0; i < m_meshs.size(); ++i) { auto& cache = m_meshs[i]; if (cache.meshGroup == meshGroup) { if (cache.version != meshGroup->version) { @@ -304,7 +305,7 @@ Uint32 OpenGL1Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGr auto newCache = GLUploadMesh(*meshGroup, m_useVBOs); - for (Uint32 i = 0; i < m_meshs.size(); ++i) { + for (uint32_t i = 0; i < m_meshs.size(); ++i) { auto& cache = m_meshs[i]; if (!cache.meshGroup) { cache = std::move(newCache); @@ -314,13 +315,13 @@ Uint32 OpenGL1Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGr } m_meshs.push_back(std::move(newCache)); - AddMeshDestroyCallback((Uint32) (m_meshs.size() - 1), mesh); - return (Uint32) (m_meshs.size() - 1); + AddMeshDestroyCallback((uint32_t) (m_meshs.size() - 1), mesh); + return (uint32_t) (m_meshs.size() - 1); } HRESULT OpenGL1Renderer::BeginFrame() { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); GL11_BeginFrame((Matrix4x4*) &m_projection[0][0]); int lightIdx = 0; @@ -368,34 +369,39 @@ HRESULT OpenGL1Renderer::FinalizeFrame() void OpenGL1Renderer::Resize(int width, int height, const ViewportTransform& viewportTransform) { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); m_width = width; m_height = height; m_viewportTransform = viewportTransform; - SDL_DestroySurface(m_renderedImage); - m_renderedImage = SDL_CreateSurface(m_width, m_height, SDL_PIXELFORMAT_RGBA32); + MORTAR_DestroySurface(m_renderedImage); + m_renderedImage = MORTAR_CreateSurface(m_width, m_height, MORTAR_PIXELFORMAT_RGBA32); GL11_Resize(width, height); } void OpenGL1Renderer::Clear(float r, float g, float b) { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); m_dirty = true; GL11_Clear(r, g, b); } void OpenGL1Renderer::Flip() { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); if (m_dirty) { - SDL_GL_SwapWindow(DDWindow); + MORTAR_GL_SwapWindow(DDWindow); m_dirty = false; } } -void OpenGL1Renderer::Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) +void OpenGL1Renderer::Draw2DImage( + uint32_t textureId, + const MORTAR_Rect& srcRect, + const MORTAR_Rect& dstRect, + FColor color +) { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); m_dirty = true; float left = -m_viewportTransform.offsetX / m_viewportTransform.scale; @@ -416,33 +422,33 @@ void OpenGL1Renderer::SetDither(bool dither) GL11_SetDither(dither); } -void OpenGL1Renderer::Download(SDL_Surface* target) +void OpenGL1Renderer::Download(MORTAR_Surface* target) { GL11_Download(m_renderedImage); - SDL_Rect srcRect = { + MORTAR_Rect srcRect = { static_cast(m_viewportTransform.offsetX), static_cast(m_viewportTransform.offsetY), static_cast(target->w * m_viewportTransform.scale), static_cast(target->h * m_viewportTransform.scale), }; - SDL_Surface* bufferClone = SDL_CreateSurface(target->w, target->h, SDL_PIXELFORMAT_RGBA32); + MORTAR_Surface* bufferClone = MORTAR_CreateSurface(target->w, target->h, MORTAR_PIXELFORMAT_RGBA32); if (!bufferClone) { - SDL_Log("SDL_CreateSurface: %s", SDL_GetError()); + MORTAR_Log("MORTAR_CreateSurface: %s", MORTAR_GetError()); return; } - SDL_BlitSurfaceScaled(m_renderedImage, &srcRect, bufferClone, nullptr, SDL_SCALEMODE_NEAREST); + MORTAR_BlitSurfaceScaled(m_renderedImage, &srcRect, bufferClone, nullptr, MORTAR_SCALEMODE_NEAREST); // Flip image vertically into target - SDL_Rect rowSrc = {0, 0, bufferClone->w, 1}; - SDL_Rect rowDst = {0, 0, bufferClone->w, 1}; + MORTAR_Rect rowSrc = {0, 0, bufferClone->w, 1}; + MORTAR_Rect rowDst = {0, 0, bufferClone->w, 1}; for (int y = 0; y < bufferClone->h; ++y) { rowSrc.y = y; rowDst.y = bufferClone->h - 1 - y; - SDL_BlitSurface(bufferClone, &rowSrc, target, &rowDst); + MORTAR_BlitSurface(bufferClone, &rowSrc, target, &rowDst); } - SDL_DestroySurface(bufferClone); + MORTAR_DestroySurface(bufferClone); } diff --git a/miniwin/src/d3drm/backends/opengles2/renderer.cpp b/miniwin/src/d3drm/backends/opengles2/renderer.cpp index 0e8746b2..d0e4c7b0 100644 --- a/miniwin/src/d3drm/backends/opengles2/renderer.cpp +++ b/miniwin/src/d3drm/backends/opengles2/renderer.cpp @@ -16,8 +16,8 @@ #include #include #endif -#include #include +#include #include static GLuint CompileShader(GLenum type, const char* source) @@ -33,10 +33,10 @@ static GLuint CompileShader(GLenum type, const char* source) if (logLength > 0) { std::vector log(logLength); glGetShaderInfoLog(shader, logLength, nullptr, log.data()); - SDL_Log("Shader compile error: %s", log.data()); + MORTAR_Log("Shader compile error: %s", log.data()); } else { - SDL_Log("CompileShader (%s)", SDL_GetError()); + MORTAR_Log("CompileShader (%s)", MORTAR_GetError()); } glDeleteShader(shader); return 0; @@ -53,28 +53,28 @@ struct SceneLightGLES2 { Direct3DRMRenderer* OpenGLES2Renderer::Create(DWORD width, DWORD height, float anisotropic) { // We have to reset the attributes here after having enumerated the - // OpenGL ES 2.0 renderer, or else SDL gets very confused by SDL_GL_DEPTH_SIZE + // OpenGL ES 2.0 renderer, or else SDL gets very confused by MORTAR_GL_DEPTH_SIZE // call below when on an EGL-based backend, and crashes with EGL_BAD_MATCH. - SDL_GL_ResetAttributes(); + MORTAR_GL_ResetAttributes(); // But ResetAttributes resets it to 16. - SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); + MORTAR_GL_SetAttribute(MORTAR_GL_DEPTH_SIZE, 24); + MORTAR_GL_SetAttribute(MORTAR_GL_CONTEXT_PROFILE_MASK, MORTAR_GL_CONTEXT_PROFILE_ES); + MORTAR_GL_SetAttribute(MORTAR_GL_CONTEXT_MAJOR_VERSION, 2); + MORTAR_GL_SetAttribute(MORTAR_GL_CONTEXT_MINOR_VERSION, 0); if (!DDWindow) { - SDL_Log("No window handler"); + MORTAR_Log("No window handler"); return nullptr; } - SDL_GLContext context = SDL_GL_CreateContext(DDWindow); + MORTAR_GLContext context = MORTAR_GL_CreateContext(DDWindow); if (!context) { - SDL_Log("SDL_GL_CreateContext: %s", SDL_GetError()); + MORTAR_Log("MORTAR_GL_CreateContext: %s", MORTAR_GetError()); return nullptr; } - if (!SDL_GL_MakeCurrent(DDWindow, context)) { - SDL_GL_DestroyContext(context); + if (!MORTAR_GL_MakeCurrent(DDWindow, context)) { + MORTAR_GL_DestroyContext(context); return nullptr; } @@ -259,11 +259,11 @@ GLES2MeshCacheEntry GLES2UploadMesh(const MeshGroup& meshGroup, bool forceUV = f return cache; } -bool OpenGLES2Renderer::UploadTexture(SDL_Surface* source, GLuint& outTexId, bool isUI) +bool OpenGLES2Renderer::UploadTexture(MORTAR_Surface* source, GLuint& outTexId, bool isUI) { - SDL_Surface* surf = source; - if (source->format != SDL_PIXELFORMAT_RGBA32) { - surf = SDL_ConvertSurface(source, SDL_PIXELFORMAT_RGBA32); + MORTAR_Surface* surf = source; + if (source->format != MORTAR_PIXELFORMAT_RGBA32) { + surf = MORTAR_ConvertSurface(source, MORTAR_PIXELFORMAT_RGBA32); if (!surf) { return false; } @@ -291,7 +291,7 @@ bool OpenGLES2Renderer::UploadTexture(SDL_Surface* source, GLuint& outTexId, boo } if (surf != source) { - SDL_DestroySurface(surf); + MORTAR_DestroySurface(surf); } return true; @@ -301,7 +301,7 @@ OpenGLES2Renderer::OpenGLES2Renderer( DWORD width, DWORD height, float anisotropic, - SDL_GLContext context, + MORTAR_GLContext context, GLuint shaderProgram ) : m_context(context), m_shaderProgram(shaderProgram), m_anisotropic(anisotropic) @@ -309,7 +309,7 @@ OpenGLES2Renderer::OpenGLES2Renderer( glGenFramebuffers(1, &m_fbo); glBindFramebuffer(GL_FRAMEBUFFER, m_fbo); - bool anisoAvailable = SDL_GL_ExtensionSupported("GL_EXT_texture_filter_anisotropic"); + bool anisoAvailable = MORTAR_GL_ExtensionSupported("GL_EXT_texture_filter_anisotropic"); GLfloat maxAniso = 0.0f; if (anisoAvailable) { glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &maxAniso); @@ -317,7 +317,7 @@ OpenGLES2Renderer::OpenGLES2Renderer( if (m_anisotropic > maxAniso) { m_anisotropic = maxAniso; } - SDL_Log( + MORTAR_Log( "Anisotropic is %s. Requested: %f, active: %f, max aniso: %f", m_anisotropic > 1.0f ? "on" : "off", anisotropic, @@ -330,26 +330,26 @@ OpenGLES2Renderer::OpenGLES2Renderer( ViewportTransform viewportTransform = {1.0f, 0.0f, 0.0f}; Resize(width, height, viewportTransform); - SDL_Surface* dummySurface = SDL_CreateSurface(1, 1, SDL_PIXELFORMAT_RGBA32); + MORTAR_Surface* dummySurface = MORTAR_CreateSurface(1, 1, MORTAR_PIXELFORMAT_RGBA32); if (!dummySurface) { - SDL_Log("Failed to create surface: %s", SDL_GetError()); + MORTAR_Log("Failed to create surface: %s", MORTAR_GetError()); return; } - if (!SDL_LockSurface(dummySurface)) { - SDL_Log("Failed to lock surface: %s", SDL_GetError()); - SDL_DestroySurface(dummySurface); + if (!MORTAR_LockSurface(dummySurface)) { + MORTAR_Log("Failed to lock surface: %s", MORTAR_GetError()); + MORTAR_DestroySurface(dummySurface); return; } - ((Uint32*) dummySurface->pixels)[0] = 0xFFFFFFFF; - SDL_UnlockSurface(dummySurface); + ((uint32_t*) dummySurface->pixels)[0] = 0xFFFFFFFF; + MORTAR_UnlockSurface(dummySurface); UploadTexture(dummySurface, m_dummyTexture, false); if (!m_dummyTexture) { - SDL_DestroySurface(dummySurface); - SDL_Log("Failed to create surface: %s", SDL_GetError()); + MORTAR_DestroySurface(dummySurface); + MORTAR_Log("Failed to create surface: %s", MORTAR_GetError()); return; } - SDL_DestroySurface(dummySurface); + MORTAR_DestroySurface(dummySurface); m_posLoc = glGetAttribLocation(m_shaderProgram, "a_position"); m_normLoc = glGetAttribLocation(m_shaderProgram, "a_normal"); @@ -383,19 +383,19 @@ OpenGLES2Renderer::OpenGLES2Renderer( OpenGLES2Renderer::~OpenGLES2Renderer() { - SDL_DestroySurface(m_renderedImage); + MORTAR_DestroySurface(m_renderedImage); glDeleteTextures(1, &m_dummyTexture); glDeleteProgram(m_shaderProgram); glDeleteTextures(1, &m_colorTarget); glDeleteRenderbuffers(1, &m_depthTarget); glDeleteFramebuffers(1, &m_fbo); - SDL_GL_DestroyContext(m_context); + MORTAR_GL_DestroyContext(m_context); } void OpenGLES2Renderer::PushLights(const SceneLight* lightsArray, size_t count) { if (count > 3) { - SDL_Log("Unsupported number of lights (%d)", static_cast(count)); + MORTAR_Log("Unsupported number of lights (%d)", static_cast(count)); count = 3; } @@ -413,10 +413,10 @@ void OpenGLES2Renderer::SetProjection(const D3DRMMATRIX4D& projection, D3DVALUE struct TextureDestroyContextGLS2 { OpenGLES2Renderer* renderer; - Uint32 textureId; + uint32_t textureId; }; -void OpenGLES2Renderer::AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture) +void OpenGLES2Renderer::AddTextureDestroyCallback(uint32_t id, IDirect3DRMTexture* texture) { auto* ctx = new TextureDestroyContextGLS2{this, id}; texture->AddDestroyCallback( @@ -434,13 +434,13 @@ void OpenGLES2Renderer::AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* ); } -Uint32 OpenGLES2Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, float scaleX, float scaleY) +uint32_t OpenGLES2Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, float scaleX, float scaleY) { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); auto texture = static_cast(iTexture); auto surface = static_cast(texture->m_surface); - for (Uint32 i = 0; i < m_textures.size(); ++i) { + for (uint32_t i = 0; i < m_textures.size(); ++i) { auto& tex = m_textures[i]; if (tex.texture == texture) { if (tex.version != texture->m_version) { @@ -458,7 +458,7 @@ Uint32 OpenGLES2Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, return NO_TEXTURE_ID; } - for (Uint32 i = 0; i < m_textures.size(); ++i) { + for (uint32_t i = 0; i < m_textures.size(); ++i) { auto& tex = m_textures[i]; if (!tex.texture) { tex.texture = texture; @@ -474,16 +474,16 @@ Uint32 OpenGLES2Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, m_textures.push_back( {texture, texture->m_version, texId, (uint16_t) surface->m_surface->w, (uint16_t) surface->m_surface->h} ); - AddTextureDestroyCallback((Uint32) (m_textures.size() - 1), texture); - return (Uint32) (m_textures.size() - 1); + AddTextureDestroyCallback((uint32_t) (m_textures.size() - 1), texture); + return (uint32_t) (m_textures.size() - 1); } struct GLES2MeshDestroyContext { OpenGLES2Renderer* renderer; - Uint32 id; + uint32_t id; }; -void OpenGLES2Renderer::AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh) +void OpenGLES2Renderer::AddMeshDestroyCallback(uint32_t id, IDirect3DRMMesh* mesh) { auto* ctx = new GLES2MeshDestroyContext{this, id}; mesh->AddDestroyCallback( @@ -501,9 +501,9 @@ void OpenGLES2Renderer::AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh) ); } -Uint32 OpenGLES2Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) +uint32_t OpenGLES2Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) { - for (Uint32 i = 0; i < m_meshs.size(); ++i) { + for (uint32_t i = 0; i < m_meshs.size(); ++i) { auto& cache = m_meshs[i]; if (cache.meshGroup == meshGroup) { if (cache.version != meshGroup->version) { @@ -515,7 +515,7 @@ Uint32 OpenGLES2Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* mesh auto newCache = GLES2UploadMesh(*meshGroup); - for (Uint32 i = 0; i < m_meshs.size(); ++i) { + for (uint32_t i = 0; i < m_meshs.size(); ++i) { auto& cache = m_meshs[i]; if (!cache.meshGroup) { cache = std::move(newCache); @@ -525,13 +525,13 @@ Uint32 OpenGLES2Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* mesh } m_meshs.push_back(std::move(newCache)); - AddMeshDestroyCallback((Uint32) (m_meshs.size() - 1), mesh); - return (Uint32) (m_meshs.size() - 1); + AddMeshDestroyCallback((uint32_t) (m_meshs.size() - 1), mesh); + return (uint32_t) (m_meshs.size() - 1); } HRESULT OpenGLES2Renderer::BeginFrame() { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); m_dirty = true; glBindFramebuffer(GL_FRAMEBUFFER, m_fbo); @@ -647,14 +647,14 @@ HRESULT OpenGLES2Renderer::FinalizeFrame() void OpenGLES2Renderer::Resize(int width, int height, const ViewportTransform& viewportTransform) { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); m_width = width; m_height = height; m_viewportTransform = viewportTransform; if (m_renderedImage) { - SDL_DestroySurface(m_renderedImage); + MORTAR_DestroySurface(m_renderedImage); } - m_renderedImage = SDL_CreateSurface(m_width, m_height, SDL_PIXELFORMAT_RGBA32); + m_renderedImage = MORTAR_CreateSurface(m_width, m_height, MORTAR_PIXELFORMAT_RGBA32); if (m_colorTarget) { glDeleteTextures(1, &m_colorTarget); @@ -681,10 +681,10 @@ void OpenGLES2Renderer::Resize(int width, int height, const ViewportTransform& v glGenRenderbuffers(1, &m_depthTarget); glBindRenderbuffer(GL_RENDERBUFFER, m_depthTarget); - if (SDL_GL_ExtensionSupported("GL_OES_depth24")) { + if (MORTAR_GL_ExtensionSupported("GL_OES_depth24")) { glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24_OES, width, height); } - else if (SDL_GL_ExtensionSupported("GL_OES_depth32")) { + else if (MORTAR_GL_ExtensionSupported("GL_OES_depth32")) { glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT32_OES, width, height); } else { @@ -693,7 +693,7 @@ void OpenGLES2Renderer::Resize(int width, int height, const ViewportTransform& v glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, m_depthTarget); GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) { - SDL_Log("FBO incomplete: 0x%X", status); + MORTAR_Log("FBO incomplete: 0x%X", status); } glBindFramebuffer(GL_FRAMEBUFFER, m_fbo); @@ -703,7 +703,7 @@ void OpenGLES2Renderer::Resize(int width, int height, const ViewportTransform& v void OpenGLES2Renderer::Clear(float r, float g, float b) { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); m_dirty = true; glBindFramebuffer(GL_FRAMEBUFFER, m_fbo); @@ -716,7 +716,7 @@ void OpenGLES2Renderer::Clear(float r, float g, float b) void OpenGLES2Renderer::Flip() { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); if (!m_dirty) { return; } @@ -773,14 +773,19 @@ void OpenGLES2Renderer::Flip() glDisableVertexAttribArray(m_texLoc); - SDL_GL_SwapWindow(DDWindow); + MORTAR_GL_SwapWindow(DDWindow); glFrontFace(GL_CW); m_dirty = false; } -void OpenGLES2Renderer::Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) +void OpenGLES2Renderer::Draw2DImage( + uint32_t textureId, + const MORTAR_Rect& srcRect, + const MORTAR_Rect& dstRect, + FColor color +) { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); m_dirty = true; glBindFramebuffer(GL_FRAMEBUFFER, m_fbo); @@ -798,7 +803,7 @@ void OpenGLES2Renderer::Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, c glUniform4f(m_colorLoc, color.r, color.g, color.b, color.a); glUniform1f(m_shinLoc, 0.0f); - SDL_Rect expandedDstRect; + MORTAR_Rect expandedDstRect; if (textureId != NO_TEXTURE_ID) { const GLES2TextureCacheEntry& texture = m_textures[textureId]; float scaleX = static_cast(dstRect.w) / srcRect.w; @@ -866,38 +871,38 @@ void OpenGLES2Renderer::Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, c glDisable(GL_SCISSOR_TEST); } -void OpenGLES2Renderer::Download(SDL_Surface* target) +void OpenGLES2Renderer::Download(MORTAR_Surface* target) { glFinish(); glBindFramebuffer(GL_FRAMEBUFFER, m_fbo); glReadPixels(0, 0, m_width, m_height, GL_RGBA, GL_UNSIGNED_BYTE, m_renderedImage->pixels); - SDL_Rect srcRect = { + MORTAR_Rect srcRect = { static_cast(m_viewportTransform.offsetX), static_cast(m_viewportTransform.offsetY), static_cast(target->w * m_viewportTransform.scale), static_cast(target->h * m_viewportTransform.scale), }; - SDL_Surface* bufferClone = SDL_CreateSurface(target->w, target->h, SDL_PIXELFORMAT_RGBA32); + MORTAR_Surface* bufferClone = MORTAR_CreateSurface(target->w, target->h, MORTAR_PIXELFORMAT_RGBA32); if (!bufferClone) { - SDL_Log("SDL_CreateSurface: %s", SDL_GetError()); + MORTAR_Log("MORTAR_CreateSurface: %s", MORTAR_GetError()); return; } - SDL_BlitSurfaceScaled(m_renderedImage, &srcRect, bufferClone, nullptr, SDL_SCALEMODE_NEAREST); + MORTAR_BlitSurfaceScaled(m_renderedImage, &srcRect, bufferClone, nullptr, MORTAR_SCALEMODE_NEAREST); // Flip image vertically into target - SDL_Rect rowSrc = {0, 0, bufferClone->w, 1}; - SDL_Rect rowDst = {0, 0, bufferClone->w, 1}; + MORTAR_Rect rowSrc = {0, 0, bufferClone->w, 1}; + MORTAR_Rect rowDst = {0, 0, bufferClone->w, 1}; for (int y = 0; y < bufferClone->h; ++y) { rowSrc.y = y; rowDst.y = bufferClone->h - 1 - y; - SDL_BlitSurface(bufferClone, &rowSrc, target, &rowDst); + MORTAR_BlitSurface(bufferClone, &rowSrc, target, &rowDst); } - SDL_DestroySurface(bufferClone); + MORTAR_DestroySurface(bufferClone); } void OpenGLES2Renderer::SetDither(bool dither) diff --git a/miniwin/src/d3drm/backends/opengles3/renderer.cpp b/miniwin/src/d3drm/backends/opengles3/renderer.cpp index 41fe7fa6..b7db2ecd 100644 --- a/miniwin/src/d3drm/backends/opengles3/renderer.cpp +++ b/miniwin/src/d3drm/backends/opengles3/renderer.cpp @@ -17,8 +17,8 @@ #include #include #endif -#include #include +#include #include static GLuint CompileShader(GLenum type, const char* source) @@ -34,10 +34,10 @@ static GLuint CompileShader(GLenum type, const char* source) if (logLength > 0) { std::vector log(logLength); glGetShaderInfoLog(shader, logLength, nullptr, log.data()); - SDL_Log("Shader compile error: %s", log.data()); + MORTAR_Log("Shader compile error: %s", log.data()); } else { - SDL_Log("CompileShader (%s)", SDL_GetError()); + MORTAR_Log("CompileShader (%s)", MORTAR_GetError()); } glDeleteShader(shader); return 0; @@ -54,28 +54,28 @@ struct SceneLightGLES3 { Direct3DRMRenderer* OpenGLES3Renderer::Create(DWORD width, DWORD height, DWORD msaaSamples, float anisotropic) { // We have to reset the attributes here after having enumerated the - // OpenGL ES 2.0 renderer, or else SDL gets very confused by SDL_GL_DEPTH_SIZE + // OpenGL ES 2.0 renderer, or else SDL gets very confused by MORTAR_GL_DEPTH_SIZE // call below when on an EGL-based backend, and crashes with EGL_BAD_MATCH. - SDL_GL_ResetAttributes(); + MORTAR_GL_ResetAttributes(); // But ResetAttributes resets it to 16. - SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); + MORTAR_GL_SetAttribute(MORTAR_GL_DEPTH_SIZE, 24); + MORTAR_GL_SetAttribute(MORTAR_GL_CONTEXT_PROFILE_MASK, MORTAR_GL_CONTEXT_PROFILE_ES); + MORTAR_GL_SetAttribute(MORTAR_GL_CONTEXT_MAJOR_VERSION, 3); + MORTAR_GL_SetAttribute(MORTAR_GL_CONTEXT_MINOR_VERSION, 0); if (!DDWindow) { - SDL_Log("No window handler"); + MORTAR_Log("No window handler"); return nullptr; } - SDL_GLContext context = SDL_GL_CreateContext(DDWindow); + MORTAR_GLContext context = MORTAR_GL_CreateContext(DDWindow); if (!context) { - SDL_Log("SDL_GL_CreateContext: %s", SDL_GetError()); + MORTAR_Log("MORTAR_GL_CreateContext: %s", MORTAR_GetError()); return nullptr; } - if (!SDL_GL_MakeCurrent(DDWindow, context)) { - SDL_GL_DestroyContext(context); + if (!MORTAR_GL_MakeCurrent(DDWindow, context)) { + MORTAR_GL_DestroyContext(context); return nullptr; } @@ -273,11 +273,11 @@ GLES3MeshCacheEntry OpenGLES3Renderer::GLES3UploadMesh(const MeshGroup& meshGrou return cache; } -bool OpenGLES3Renderer::UploadTexture(SDL_Surface* source, GLuint& outTexId, bool isUI) +bool OpenGLES3Renderer::UploadTexture(MORTAR_Surface* source, GLuint& outTexId, bool isUI) { - SDL_Surface* surf = source; - if (source->format != SDL_PIXELFORMAT_RGBA32) { - surf = SDL_ConvertSurface(source, SDL_PIXELFORMAT_RGBA32); + MORTAR_Surface* surf = source; + if (source->format != MORTAR_PIXELFORMAT_RGBA32) { + surf = MORTAR_ConvertSurface(source, MORTAR_PIXELFORMAT_RGBA32); if (!surf) { return false; } @@ -305,7 +305,7 @@ bool OpenGLES3Renderer::UploadTexture(SDL_Surface* source, GLuint& outTexId, boo } if (surf != source) { - SDL_DestroySurface(surf); + MORTAR_DestroySurface(surf); } return true; @@ -316,7 +316,7 @@ OpenGLES3Renderer::OpenGLES3Renderer( DWORD height, DWORD msaaSamples, float anisotropic, - SDL_GLContext context, + MORTAR_GLContext context, GLuint shaderProgram ) : m_context(context), m_shaderProgram(shaderProgram), m_msaa(msaaSamples), m_anisotropic(anisotropic) @@ -329,7 +329,7 @@ OpenGLES3Renderer::OpenGLES3Renderer( if (m_msaa > maxSamples) { m_msaa = maxSamples; } - SDL_Log( + MORTAR_Log( "MSAA is %s. Requested samples: %d, active samples: %d, max samples: %d", m_msaa > 1 ? "on" : "off", msaaSamples, @@ -341,7 +341,7 @@ OpenGLES3Renderer::OpenGLES3Renderer( glGenFramebuffers(1, &m_resolveFBO); } - bool anisoAvailable = SDL_GL_ExtensionSupported("GL_EXT_texture_filter_anisotropic"); + bool anisoAvailable = MORTAR_GL_ExtensionSupported("GL_EXT_texture_filter_anisotropic"); GLfloat maxAniso = 0.0f; if (anisoAvailable) { glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &maxAniso); @@ -349,7 +349,7 @@ OpenGLES3Renderer::OpenGLES3Renderer( if (m_anisotropic > maxAniso) { m_anisotropic = maxAniso; } - SDL_Log( + MORTAR_Log( "Anisotropic is %s. Requested: %f, active: %f, max aniso: %f", m_anisotropic > 1.0f ? "on" : "off", anisotropic, @@ -362,26 +362,26 @@ OpenGLES3Renderer::OpenGLES3Renderer( ViewportTransform viewportTransform = {1.0f, 0.0f, 0.0f}; Resize(width, height, viewportTransform); - SDL_Surface* dummySurface = SDL_CreateSurface(1, 1, SDL_PIXELFORMAT_RGBA32); + MORTAR_Surface* dummySurface = MORTAR_CreateSurface(1, 1, MORTAR_PIXELFORMAT_RGBA32); if (!dummySurface) { - SDL_Log("Failed to create surface: %s", SDL_GetError()); + MORTAR_Log("Failed to create surface: %s", MORTAR_GetError()); return; } - if (!SDL_LockSurface(dummySurface)) { - SDL_Log("Failed to lock surface: %s", SDL_GetError()); - SDL_DestroySurface(dummySurface); + if (!MORTAR_LockSurface(dummySurface)) { + MORTAR_Log("Failed to lock surface: %s", MORTAR_GetError()); + MORTAR_DestroySurface(dummySurface); return; } - ((Uint32*) dummySurface->pixels)[0] = 0xFFFFFFFF; - SDL_UnlockSurface(dummySurface); + ((uint32_t*) dummySurface->pixels)[0] = 0xFFFFFFFF; + MORTAR_UnlockSurface(dummySurface); UploadTexture(dummySurface, m_dummyTexture, false); if (!m_dummyTexture) { - SDL_DestroySurface(dummySurface); - SDL_Log("Failed to create surface: %s", SDL_GetError()); + MORTAR_DestroySurface(dummySurface); + MORTAR_Log("Failed to create surface: %s", MORTAR_GetError()); return; } - SDL_DestroySurface(dummySurface); + MORTAR_DestroySurface(dummySurface); m_posLoc = glGetAttribLocation(m_shaderProgram, "a_position"); m_normLoc = glGetAttribLocation(m_shaderProgram, "a_normal"); @@ -415,7 +415,7 @@ OpenGLES3Renderer::OpenGLES3Renderer( OpenGLES3Renderer::~OpenGLES3Renderer() { - SDL_DestroySurface(m_renderedImage); + MORTAR_DestroySurface(m_renderedImage); glDeleteTextures(1, &m_dummyTexture); glDeleteProgram(m_shaderProgram); glDeleteRenderbuffers(1, &m_colorTarget); @@ -426,13 +426,13 @@ OpenGLES3Renderer::~OpenGLES3Renderer() glDeleteFramebuffers(1, &m_resolveFBO); } - SDL_GL_DestroyContext(m_context); + MORTAR_GL_DestroyContext(m_context); } void OpenGLES3Renderer::PushLights(const SceneLight* lightsArray, size_t count) { if (count > 3) { - SDL_Log("Unsupported number of lights (%d)", static_cast(count)); + MORTAR_Log("Unsupported number of lights (%d)", static_cast(count)); count = 3; } @@ -450,10 +450,10 @@ void OpenGLES3Renderer::SetProjection(const D3DRMMATRIX4D& projection, D3DVALUE struct TextureDestroyContextGLS2 { OpenGLES3Renderer* renderer; - Uint32 textureId; + uint32_t textureId; }; -void OpenGLES3Renderer::AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture) +void OpenGLES3Renderer::AddTextureDestroyCallback(uint32_t id, IDirect3DRMTexture* texture) { auto* ctx = new TextureDestroyContextGLS2{this, id}; texture->AddDestroyCallback( @@ -471,13 +471,13 @@ void OpenGLES3Renderer::AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* ); } -Uint32 OpenGLES3Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, float scaleX, float scaleY) +uint32_t OpenGLES3Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, float scaleX, float scaleY) { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); auto texture = static_cast(iTexture); auto surface = static_cast(texture->m_surface); - for (Uint32 i = 0; i < m_textures.size(); ++i) { + for (uint32_t i = 0; i < m_textures.size(); ++i) { auto& tex = m_textures[i]; if (tex.texture == texture) { if (tex.version != texture->m_version) { @@ -495,7 +495,7 @@ Uint32 OpenGLES3Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, return NO_TEXTURE_ID; } - for (Uint32 i = 0; i < m_textures.size(); ++i) { + for (uint32_t i = 0; i < m_textures.size(); ++i) { auto& tex = m_textures[i]; if (!tex.texture) { tex.texture = texture; @@ -511,16 +511,16 @@ Uint32 OpenGLES3Renderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, m_textures.push_back( {texture, texture->m_version, texId, (uint16_t) surface->m_surface->w, (uint16_t) surface->m_surface->h} ); - AddTextureDestroyCallback((Uint32) (m_textures.size() - 1), texture); - return (Uint32) (m_textures.size() - 1); + AddTextureDestroyCallback((uint32_t) (m_textures.size() - 1), texture); + return (uint32_t) (m_textures.size() - 1); } struct GLES3MeshDestroyContext { OpenGLES3Renderer* renderer; - Uint32 id; + uint32_t id; }; -void OpenGLES3Renderer::AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh) +void OpenGLES3Renderer::AddMeshDestroyCallback(uint32_t id, IDirect3DRMMesh* mesh) { auto* ctx = new GLES3MeshDestroyContext{this, id}; mesh->AddDestroyCallback( @@ -539,9 +539,9 @@ void OpenGLES3Renderer::AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh) ); } -Uint32 OpenGLES3Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) +uint32_t OpenGLES3Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) { - for (Uint32 i = 0; i < m_meshs.size(); ++i) { + for (uint32_t i = 0; i < m_meshs.size(); ++i) { auto& cache = m_meshs[i]; if (cache.meshGroup == meshGroup) { if (cache.version != meshGroup->version) { @@ -553,7 +553,7 @@ Uint32 OpenGLES3Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* mesh auto newCache = GLES3UploadMesh(*meshGroup); - for (Uint32 i = 0; i < m_meshs.size(); ++i) { + for (uint32_t i = 0; i < m_meshs.size(); ++i) { auto& cache = m_meshs[i]; if (!cache.meshGroup) { cache = std::move(newCache); @@ -563,13 +563,13 @@ Uint32 OpenGLES3Renderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* mesh } m_meshs.push_back(std::move(newCache)); - AddMeshDestroyCallback((Uint32) (m_meshs.size() - 1), mesh); - return (Uint32) (m_meshs.size() - 1); + AddMeshDestroyCallback((uint32_t) (m_meshs.size() - 1), mesh); + return (uint32_t) (m_meshs.size() - 1); } HRESULT OpenGLES3Renderer::BeginFrame() { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); m_dirty = true; glBindFramebuffer(GL_FRAMEBUFFER, m_fbo); @@ -669,14 +669,14 @@ HRESULT OpenGLES3Renderer::FinalizeFrame() void OpenGLES3Renderer::Resize(int width, int height, const ViewportTransform& viewportTransform) { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); m_width = width; m_height = height; m_viewportTransform = viewportTransform; if (m_renderedImage) { - SDL_DestroySurface(m_renderedImage); + MORTAR_DestroySurface(m_renderedImage); } - m_renderedImage = SDL_CreateSurface(m_width, m_height, SDL_PIXELFORMAT_RGBA32); + m_renderedImage = MORTAR_CreateSurface(m_width, m_height, MORTAR_PIXELFORMAT_RGBA32); if (m_colorTarget) { glDeleteRenderbuffers(1, &m_colorTarget); @@ -716,7 +716,7 @@ void OpenGLES3Renderer::Resize(int width, int height, const ViewportTransform& v glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, m_depthTarget); GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) { - SDL_Log("FBO incomplete: 0x%X", status); + MORTAR_Log("FBO incomplete: 0x%X", status); } if (m_msaa > 1) { @@ -727,7 +727,7 @@ void OpenGLES3Renderer::Resize(int width, int height, const ViewportTransform& v glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, m_resolveColor); GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) { - SDL_Log("Resolve FBO incomplete: 0x%X", status); + MORTAR_Log("Resolve FBO incomplete: 0x%X", status); } } @@ -738,7 +738,7 @@ void OpenGLES3Renderer::Resize(int width, int height, const ViewportTransform& v void OpenGLES3Renderer::Clear(float r, float g, float b) { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); m_dirty = true; glBindFramebuffer(GL_FRAMEBUFFER, m_fbo); @@ -751,7 +751,7 @@ void OpenGLES3Renderer::Clear(float r, float g, float b) void OpenGLES3Renderer::Flip() { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); if (!m_dirty) { return; } @@ -771,13 +771,18 @@ void OpenGLES3Renderer::Flip() glBlitFramebuffer(0, 0, m_width, m_height, 0, 0, m_width, m_height, GL_COLOR_BUFFER_BIT, GL_NEAREST); - SDL_GL_SwapWindow(DDWindow); + MORTAR_GL_SwapWindow(DDWindow); m_dirty = false; } -void OpenGLES3Renderer::Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) +void OpenGLES3Renderer::Draw2DImage( + uint32_t textureId, + const MORTAR_Rect& srcRect, + const MORTAR_Rect& dstRect, + FColor color +) { - SDL_GL_MakeCurrent(DDWindow, m_context); + MORTAR_GL_MakeCurrent(DDWindow, m_context); m_dirty = true; glBindFramebuffer(GL_FRAMEBUFFER, m_fbo); @@ -795,7 +800,7 @@ void OpenGLES3Renderer::Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, c glUniform4f(m_colorLoc, color.r, color.g, color.b, color.a); glUniform1f(m_shinLoc, 0.0f); - SDL_Rect expandedDstRect; + MORTAR_Rect expandedDstRect; if (textureId != NO_TEXTURE_ID) { const GLES3TextureCacheEntry& texture = m_textures[textureId]; float scaleX = static_cast(dstRect.w) / srcRect.w; @@ -855,7 +860,7 @@ void OpenGLES3Renderer::Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, c glDisable(GL_SCISSOR_TEST); } -void OpenGLES3Renderer::Download(SDL_Surface* target) +void OpenGLES3Renderer::Download(MORTAR_Surface* target) { glFinish(); @@ -871,31 +876,31 @@ void OpenGLES3Renderer::Download(SDL_Surface* target) glReadPixels(0, 0, m_width, m_height, GL_RGBA, GL_UNSIGNED_BYTE, m_renderedImage->pixels); - SDL_Rect srcRect = { + MORTAR_Rect srcRect = { static_cast(m_viewportTransform.offsetX), static_cast(m_viewportTransform.offsetY), static_cast(target->w * m_viewportTransform.scale), static_cast(target->h * m_viewportTransform.scale), }; - SDL_Surface* bufferClone = SDL_CreateSurface(target->w, target->h, SDL_PIXELFORMAT_RGBA32); + MORTAR_Surface* bufferClone = MORTAR_CreateSurface(target->w, target->h, MORTAR_PIXELFORMAT_RGBA32); if (!bufferClone) { - SDL_Log("SDL_CreateSurface: %s", SDL_GetError()); + MORTAR_Log("MORTAR_CreateSurface: %s", MORTAR_GetError()); return; } - SDL_BlitSurfaceScaled(m_renderedImage, &srcRect, bufferClone, nullptr, SDL_SCALEMODE_NEAREST); + MORTAR_BlitSurfaceScaled(m_renderedImage, &srcRect, bufferClone, nullptr, MORTAR_SCALEMODE_NEAREST); // Flip image vertically into target - SDL_Rect rowSrc = {0, 0, bufferClone->w, 1}; - SDL_Rect rowDst = {0, 0, bufferClone->w, 1}; + MORTAR_Rect rowSrc = {0, 0, bufferClone->w, 1}; + MORTAR_Rect rowDst = {0, 0, bufferClone->w, 1}; for (int y = 0; y < bufferClone->h; ++y) { rowSrc.y = y; rowDst.y = bufferClone->h - 1 - y; - SDL_BlitSurface(bufferClone, &rowSrc, target, &rowDst); + MORTAR_BlitSurface(bufferClone, &rowSrc, target, &rowDst); } - SDL_DestroySurface(bufferClone); + MORTAR_DestroySurface(bufferClone); } void OpenGLES3Renderer::SetDither(bool dither) diff --git a/miniwin/src/d3drm/backends/sdl3gpu/renderer.cpp b/miniwin/src/d3drm/backends/sdl3gpu/renderer.cpp index 050dded2..2f6518b2 100644 --- a/miniwin/src/d3drm/backends/sdl3gpu/renderer.cpp +++ b/miniwin/src/d3drm/backends/sdl3gpu/renderer.cpp @@ -1,15 +1,34 @@ #include "ShaderIndex.h" #include "d3drmrenderer.h" -#include "d3drmrenderer_sdl3gpu.h" +#include "d3drmrenderer_sdl3gpu_priv.h" #include "ddraw_impl.h" #include "mathutils.h" #include "meshutils.h" #include "miniwin.h" -#include #include #include #include +#include +#include + +static SDL_Window* to_SDL3_Window(MORTAR_Window* mortar_window) +{ + SDL_Window* sdl3_window = + (SDL_Window*) MORTAR_EXT_GetWindowProperty(mortar_window, MORTAR_WINDOW_PROPERTY_SDL3WINDOW, nullptr); + SDL_assert(sdl3_window != NULL); + return sdl3_window; +} + +static SDL_Color to_SDL_Color(const MORTAR_Color& mortar_color) +{ + SDL_Color sdl_color; + sdl_color.r = mortar_color.r; + sdl_color.g = mortar_color.g; + sdl_color.b = mortar_color.b; + sdl_color.a = mortar_color.a; + return sdl_color; +} struct ScopedSurface { SDL_Surface* ptr = nullptr; @@ -95,7 +114,7 @@ struct ScopedShader { static SDL_GPUGraphicsPipeline* InitializeGraphicsPipeline( SDL_GPUDevice* device, - SDL_Window* window, + MORTAR_Window* window, bool depthTest, bool depthWrite ) @@ -148,7 +167,7 @@ static SDL_GPUGraphicsPipeline* InitializeGraphicsPipeline( vertexInputState.num_vertex_attributes = SDL_arraysize(vertexAttrs); SDL_GPUColorTargetDescription colorTargets = {}; - colorTargets.format = SDL_GetGPUSwapchainTextureFormat(device, window); + colorTargets.format = SDL_GetGPUSwapchainTextureFormat(device, to_SDL3_Window(window)); if (depthTest && depthWrite) { colorTargets.blend_state.enable_blend = false; } @@ -200,35 +219,35 @@ Direct3DRMRenderer* Direct3DRMSDL3GPURenderer::Create(DWORD width, DWORD height) nullptr )}; if (!device.ptr) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "SDL_CreateGPUDevice failed (%s)", SDL_GetError()); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "SDL_CreateGPUDevice failed (%s)", MORTAR_GetError()); return nullptr; } if (!DDWindow) { - SDL_Log("No window handler"); + MORTAR_Log("No window handler"); return nullptr; } - if (!SDL_ClaimWindowForGPUDevice(device.ptr, DDWindow)) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "SDL_ClaimWindowForGPUDevice: %s", SDL_GetError()); + if (!SDL_ClaimWindowForGPUDevice(device.ptr, to_SDL3_Window(DDWindow))) { + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "SDL_ClaimWindowForGPUDevice: %s", MORTAR_GetError()); return nullptr; } ScopedPipeline opaquePipeline{device.ptr, InitializeGraphicsPipeline(device.ptr, DDWindow, true, true)}; if (!opaquePipeline.ptr) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "InitializeGraphicsPipeline for opaquePipeline"); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "InitializeGraphicsPipeline for opaquePipeline"); return nullptr; } ScopedPipeline transparentPipeline{device.ptr, InitializeGraphicsPipeline(device.ptr, DDWindow, true, false)}; if (!transparentPipeline.ptr) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "InitializeGraphicsPipeline for transparentPipeline"); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "InitializeGraphicsPipeline for transparentPipeline"); return nullptr; } ScopedPipeline uiPipeline{device.ptr, InitializeGraphicsPipeline(device.ptr, DDWindow, false, false)}; if (!uiPipeline.ptr) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "InitializeGraphicsPipeline for uiPipeline"); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "InitializeGraphicsPipeline for uiPipeline"); return nullptr; } @@ -239,7 +258,11 @@ Direct3DRMRenderer* Direct3DRMSDL3GPURenderer::Create(DWORD width, DWORD height) uploadBufferInfo.size = uploadBufferSize; ScopedTransferBuffer uploadBuffer{device.ptr, SDL_CreateGPUTransferBuffer(device.ptr, &uploadBufferInfo)}; if (!uploadBuffer.ptr) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "SDL_CreateGPUTransferBuffer filed for upload buffer (%s)", SDL_GetError()); + MORTAR_LogError( + LOG_CATEGORY_MINIWIN, + "SDL_CreateGPUTransferBuffer filed for upload buffer (%s)", + MORTAR_GetError() + ); return nullptr; } @@ -252,7 +275,7 @@ Direct3DRMRenderer* Direct3DRMSDL3GPURenderer::Create(DWORD width, DWORD height) samplerInfo.address_mode_w = SDL_GPU_SAMPLERADDRESSMODE_REPEAT; ScopedSampler sampler{device.ptr, SDL_CreateGPUSampler(device.ptr, &samplerInfo)}; if (!sampler.ptr) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "Failed to create sampler: %s", SDL_GetError()); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "Failed to create sampler: %s", MORTAR_GetError()); return nullptr; } @@ -265,7 +288,7 @@ Direct3DRMRenderer* Direct3DRMSDL3GPURenderer::Create(DWORD width, DWORD height) uiSamplerInfo.address_mode_w = SDL_GPU_SAMPLERADDRESSMODE_CLAMP_TO_EDGE; ScopedSampler uiSampler{device.ptr, SDL_CreateGPUSampler(device.ptr, &uiSamplerInfo)}; if (!uiSampler.ptr) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "Failed to create sampler: %s", SDL_GetError()); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "Failed to create sampler: %s", MORTAR_GetError()); return nullptr; } @@ -316,11 +339,11 @@ Direct3DRMSDL3GPURenderer::Direct3DRMSDL3GPURenderer( m_virtualHeight = height; SDL_Surface* dummySurface = SDL_CreateSurface(1, 1, SDL_PIXELFORMAT_RGBA32); if (!dummySurface) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "Failed to create surface: %s", SDL_GetError()); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "Failed to create surface: %s", MORTAR_GetError()); return; } if (!SDL_LockSurface(dummySurface)) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "Failed to lock surface: %s", SDL_GetError()); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "Failed to lock surface: %s", MORTAR_GetError()); SDL_DestroySurface(dummySurface); return; } @@ -330,7 +353,7 @@ Direct3DRMSDL3GPURenderer::Direct3DRMSDL3GPURenderer( m_dummyTexture = CreateTextureFromSurface(dummySurface); if (!m_dummyTexture) { SDL_DestroySurface(dummySurface); - SDL_LogError(LOG_CATEGORY_MINIWIN, "Failed to create surface: %s", SDL_GetError()); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "Failed to create surface: %s", MORTAR_GetError()); return; } SDL_DestroySurface(dummySurface); @@ -353,7 +376,7 @@ Direct3DRMSDL3GPURenderer::~Direct3DRMSDL3GPURenderer() assert(m_refCount == 0); SDL_ReleaseGPUBuffer(m_device, m_uiMeshCache.vertexBuffer); SDL_ReleaseGPUBuffer(m_device, m_uiMeshCache.indexBuffer); - SDL_ReleaseWindowFromGPUDevice(m_device, DDWindow); + SDL_ReleaseWindowFromGPUDevice(m_device, to_SDL3_Window(DDWindow)); if (m_downloadBuffer) { SDL_ReleaseGPUTransferBuffer(m_device, m_downloadBuffer); } @@ -383,7 +406,7 @@ Direct3DRMSDL3GPURenderer::~Direct3DRMSDL3GPURenderer() void Direct3DRMSDL3GPURenderer::PushLights(const SceneLight* lights, size_t count) { if (count > 3) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "Unsupported number of lights (%d)", static_cast(count)); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "Unsupported number of lights (%d)", static_cast(count)); count = 3; } int lightCount = std::min(static_cast(count), 3); @@ -442,7 +465,7 @@ SDL_GPUTexture* Direct3DRMSDL3GPURenderer::CreateTextureFromSurface(SDL_Surface* { ScopedSurface surf{SDL_ConvertSurface(surface, SDL_PIXELFORMAT_RGBA32)}; if (!surf.ptr) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "SDL_ConvertSurface (%s)", SDL_GetError()); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "SDL_ConvertSurface (%s)", MORTAR_GetError()); return nullptr; } @@ -458,14 +481,14 @@ SDL_GPUTexture* Direct3DRMSDL3GPURenderer::CreateTextureFromSurface(SDL_Surface* textureInfo.num_levels = 1; ScopedTexture texture{m_device, SDL_CreateGPUTexture(m_device, &textureInfo)}; if (!texture.ptr) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "SDL_CreateGPUTexture (%s)", SDL_GetError()); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "SDL_CreateGPUTexture (%s)", MORTAR_GetError()); return nullptr; } SDL_GPUTransferBuffer* transferBuffer = GetUploadBuffer(dataSize); void* transferData = SDL_MapGPUTransferBuffer(m_device, transferBuffer, false); if (!transferData) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "SDL_MapGPUTransferBuffer (%s)", SDL_GetError()); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "SDL_MapGPUTransferBuffer (%s)", MORTAR_GetError()); return nullptr; } memcpy(transferData, surf.ptr->pixels, dataSize); @@ -481,10 +504,10 @@ SDL_GPUTexture* Direct3DRMSDL3GPURenderer::CreateTextureFromSurface(SDL_Surface* SDL_GPUCommandBuffer* cmdbuf = SDL_AcquireGPUCommandBuffer(m_device); if (!cmdbuf) { - SDL_LogError( + MORTAR_LogError( LOG_CATEGORY_MINIWIN, "SDL_AcquireGPUCommandBuffer in CreateTextureFromSurface failed (%s)", - SDL_GetError() + MORTAR_GetError() ); return nullptr; } @@ -501,11 +524,12 @@ SDL_GPUTexture* Direct3DRMSDL3GPURenderer::CreateTextureFromSurface(SDL_Surface* return texptr; } -Uint32 Direct3DRMSDL3GPURenderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, float scaleX, float scaleY) +uint32_t Direct3DRMSDL3GPURenderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, float scaleX, float scaleY) { auto texture = static_cast(iTexture); auto surface = static_cast(texture->m_surface); - SDL_Surface* surf = surface->m_surface; + SDL_Surface* surf = + (SDL_Surface*) MORTAR_EXT_GetSurfaceProperty(surface->m_surface, MORTAR_SURFACE_PROPERTY_SDL3SURFACE, nullptr); for (Uint32 i = 0; i < m_textures.size(); ++i) { auto& tex = m_textures[i]; @@ -570,7 +594,7 @@ SDL3MeshCache Direct3DRMSDL3GPURenderer::UploadMesh(const MeshGroup& meshGroup) vertexBufferCreateInfo.size = sizeof(D3DRMVERTEX) * finalVertices.size(); SDL_GPUBuffer* vertexBuffer = SDL_CreateGPUBuffer(m_device, &vertexBufferCreateInfo); if (!vertexBuffer) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "SDL_CreateGPUBuffer failed (%s)", SDL_GetError()); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "SDL_CreateGPUBuffer failed (%s)", MORTAR_GetError()); return {}; } @@ -579,7 +603,7 @@ SDL3MeshCache Direct3DRMSDL3GPURenderer::UploadMesh(const MeshGroup& meshGroup) indexBufferCreateInfo.size = sizeof(Uint16) * finalIndices.size(); SDL_GPUBuffer* indexBuffer = SDL_CreateGPUBuffer(m_device, &indexBufferCreateInfo); if (!indexBuffer) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "Failed to create index buffer (%s)", SDL_GetError()); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "Failed to create index buffer (%s)", MORTAR_GetError()); return {}; } @@ -590,9 +614,9 @@ SDL3MeshCache Direct3DRMSDL3GPURenderer::UploadMesh(const MeshGroup& meshGroup) if (!uploadBuffer) { return {}; } - auto* transferData = static_cast(SDL_MapGPUTransferBuffer(m_device, uploadBuffer, false)); + auto* transferData = static_cast(SDL_MapGPUTransferBuffer(m_device, uploadBuffer, false)); if (!transferData) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "Transfer buffer mapping failed (%s)", SDL_GetError()); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "Transfer buffer mapping failed (%s)", MORTAR_GetError()); return {}; } memcpy(transferData, finalVertices.data(), verticesSize); @@ -604,7 +628,7 @@ SDL3MeshCache Direct3DRMSDL3GPURenderer::UploadMesh(const MeshGroup& meshGroup) // Upload vertex + index data to GPU SDL_GPUCommandBuffer* cmdbuf = SDL_AcquireGPUCommandBuffer(m_device); if (!cmdbuf) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "SDL_AcquireGPUCommandBuffer failed (%s)", SDL_GetError()); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "SDL_AcquireGPUCommandBuffer failed (%s)", MORTAR_GetError()); return {}; } @@ -650,7 +674,7 @@ void Direct3DRMSDL3GPURenderer::AddMeshDestroyCallback(Uint32 id, IDirect3DRMMes ); } -Uint32 Direct3DRMSDL3GPURenderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) +uint32_t Direct3DRMSDL3GPURenderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) { for (Uint32 i = 0; i < m_meshs.size(); ++i) { auto& cache = m_meshs[i]; @@ -705,10 +729,10 @@ SDL_GPUTransferBuffer* Direct3DRMSDL3GPURenderer::GetUploadBuffer(size_t size) m_uploadBuffer = SDL_CreateGPUTransferBuffer(m_device, &transferCreateInfo); if (!m_uploadBuffer) { m_uploadBufferSize = 0; - SDL_LogError( + MORTAR_LogError( LOG_CATEGORY_MINIWIN, "SDL_CreateGPUTransferBuffer failed for updating upload buffer (%s)", - SDL_GetError() + MORTAR_GetError() ); } m_uploadBufferSize = size; @@ -724,10 +748,10 @@ void Direct3DRMSDL3GPURenderer::StartRenderPass(float r, float g, float b, bool } m_cmdbuf = SDL_AcquireGPUCommandBuffer(m_device); if (!m_cmdbuf) { - SDL_LogError( + MORTAR_LogError( LOG_CATEGORY_MINIWIN, "SDL_AcquireGPUCommandBuffer in StartRenderPass failed (%s)", - SDL_GetError() + MORTAR_GetError() ); return; } @@ -779,7 +803,7 @@ void Direct3DRMSDL3GPURenderer::SubmitDraw( { memcpy(&m_uniforms.worldViewMatrix, modelViewMatrix, sizeof(D3DRMMATRIX4D)); PackNormalMatrix(normalMatrix, m_uniforms.normalMatrix); - m_fragmentShadingData.color = appearance.color; + m_fragmentShadingData.color = to_SDL_Color(appearance.color); m_fragmentShadingData.shininess = appearance.shininess; bool useTexture = appearance.textureId != NO_TEXTURE_ID; m_fragmentShadingData.useTexture = appearance.textureId != NO_TEXTURE_ID; @@ -815,7 +839,7 @@ void Direct3DRMSDL3GPURenderer::Resize(int width, int height, const ViewportTran } SDL_GPUTextureCreateInfo textureInfo = {}; textureInfo.type = SDL_GPU_TEXTURETYPE_2D; - textureInfo.format = SDL_GetGPUSwapchainTextureFormat(m_device, DDWindow); + textureInfo.format = SDL_GetGPUSwapchainTextureFormat(m_device, to_SDL3_Window(DDWindow)); textureInfo.usage = SDL_GPU_TEXTUREUSAGE_COLOR_TARGET | SDL_GPU_TEXTUREUSAGE_SAMPLER; textureInfo.width = m_width; textureInfo.height = m_height; @@ -824,7 +848,7 @@ void Direct3DRMSDL3GPURenderer::Resize(int width, int height, const ViewportTran textureInfo.sample_count = SDL_GPU_SAMPLECOUNT_1; m_transferTexture = SDL_CreateGPUTexture(m_device, &textureInfo); if (!m_transferTexture) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "SDL_CreateGPUTexture for backbuffer failed (%s)", SDL_GetError()); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "SDL_CreateGPUTexture for backbuffer failed (%s)", MORTAR_GetError()); return; } @@ -836,7 +860,7 @@ void Direct3DRMSDL3GPURenderer::Resize(int width, int height, const ViewportTran depthTexInfo.usage = SDL_GPU_TEXTUREUSAGE_DEPTH_STENCIL_TARGET; m_depthTexture = SDL_CreateGPUTexture(m_device, &depthTexInfo); if (!m_depthTexture) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "SDL_CreateGPUTexture for depth buffer (%s)", SDL_GetError()); + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "SDL_CreateGPUTexture for depth buffer (%s)", MORTAR_GetError()); return; } @@ -847,10 +871,10 @@ void Direct3DRMSDL3GPURenderer::Resize(int width, int height, const ViewportTran ((m_width - (m_viewportTransform.offsetX * 2)) * (m_height - (m_viewportTransform.offsetY * 2))) * 4; m_downloadBuffer = SDL_CreateGPUTransferBuffer(m_device, &downloadBufferInfo); if (!m_downloadBuffer) { - SDL_LogError( + MORTAR_LogError( LOG_CATEGORY_MINIWIN, "SDL_CreateGPUTransferBuffer filed for download buffer (%s)", - SDL_GetError() + MORTAR_GetError() ); return; } @@ -867,9 +891,15 @@ void Direct3DRMSDL3GPURenderer::Flip() } SDL_GPUTexture* swapchainTexture; - if (!SDL_WaitAndAcquireGPUSwapchainTexture(m_cmdbuf, DDWindow, &swapchainTexture, nullptr, nullptr) || + if (!SDL_WaitAndAcquireGPUSwapchainTexture( + m_cmdbuf, + to_SDL3_Window(DDWindow), + &swapchainTexture, + nullptr, + nullptr + ) || !swapchainTexture) { - SDL_Log("SDL_WaitAndAcquireGPUSwapchainTexture: %s", SDL_GetError()); + MORTAR_Log("SDL_WaitAndAcquireGPUSwapchainTexture: %s", MORTAR_GetError()); return; } @@ -891,8 +921,8 @@ void Direct3DRMSDL3GPURenderer::Flip() void Direct3DRMSDL3GPURenderer::Draw2DImage( Uint32 textureId, - const SDL_Rect& srcRect, - const SDL_Rect& dstRect, + const MORTAR_Rect& srcRect, + const MORTAR_Rect& dstRect, FColor color ) { @@ -902,7 +932,7 @@ void Direct3DRMSDL3GPURenderer::Draw2DImage( SDL_BindGPUGraphicsPipeline(m_renderPass, m_uiPipeline); SDL_GPUTexture* tex; - SDL_Rect expandedDstRect; + MORTAR_Rect expandedDstRect; if (textureId == NO_TEXTURE_ID) { expandedDstRect = dstRect; tex = m_dummyTexture; @@ -934,10 +964,10 @@ void Direct3DRMSDL3GPURenderer::Draw2DImage( SceneLight fullBright = {{1, 1, 1, 1}, {0, 0, 0}, 0, {0, 0, 0}, 0}; memcpy(&m_fragmentShadingData.lights, &fullBright, sizeof(SceneLight)); m_fragmentShadingData.lightCount = 1; - m_fragmentShadingData.color.r = static_cast(color.r * 255); - m_fragmentShadingData.color.g = static_cast(color.g * 255); - m_fragmentShadingData.color.b = static_cast(color.b * 255); - m_fragmentShadingData.color.a = static_cast(color.a * 255); + m_fragmentShadingData.color.r = static_cast(color.r * 255); + m_fragmentShadingData.color.g = static_cast(color.g * 255); + m_fragmentShadingData.color.b = static_cast(color.b * 255); + m_fragmentShadingData.color.a = static_cast(color.a * 255); m_fragmentShadingData.shininess = 0.0f; m_fragmentShadingData.useTexture = 1; @@ -967,7 +997,7 @@ void Direct3DRMSDL3GPURenderer::SetDither(bool dither) { } -void Direct3DRMSDL3GPURenderer::Download(SDL_Surface* target) +void Direct3DRMSDL3GPURenderer::Download(MORTAR_Surface* target) { if (!m_cmdbuf) { StartRenderPass(0, 0, 0, false); @@ -1016,7 +1046,51 @@ void Direct3DRMSDL3GPURenderer::Download(SDL_Surface* target) SDL_Surface* renderedImage = SDL_CreateSurfaceFrom(width, height, SDL_PIXELFORMAT_XRGB8888, downloadedData, width * 4); - SDL_BlitSurfaceScaled(renderedImage, nullptr, target, nullptr, SDL_SCALEMODE_NEAREST); + SDL_BlitSurfaceScaled( + renderedImage, + nullptr, + (SDL_Surface*) MORTAR_EXT_GetSurfaceProperty(target, MORTAR_SURFACE_PROPERTY_SDL3SURFACE, nullptr), + nullptr, + SDL_SCALEMODE_NEAREST + ); SDL_DestroySurface(renderedImage); SDL_UnmapGPUTransferBuffer(m_device, m_downloadBuffer); } + +void Direct3DRMSDL3GPU_EnumDevice(LPD3DENUMDEVICESCALLBACK cb, void* ctx) +{ + if (MORTAR_GetBackend() != MORTAR_BACKEND_SDL3) { + return; + } +#ifdef __APPLE__ + SDL_GPUDevice* device = SDL_CreateGPUDevice(SDL_GPU_SHADERFORMAT_MSL, false, nullptr); + if (!device) { + return; + } + SDL_DestroyGPUDevice(device); +#else + Direct3DRMRenderer* device = Direct3DRMSDL3GPURenderer::Create(640, 480); + if (!device) { + return; + } + device->Release(); +#endif + + D3DDEVICEDESC halDesc = {}; + halDesc.dcmColorModel = D3DCOLOR_RGB; + halDesc.dwFlags = D3DDD_DEVICEZBUFFERBITDEPTH; + halDesc.dwDeviceZBufferBitDepth = DDBD_32; + halDesc.dwDeviceRenderBitDepth = DDBD_32; + halDesc.dpcTriCaps.dwTextureCaps = D3DPTEXTURECAPS_PERSPECTIVE; + halDesc.dpcTriCaps.dwShadeCaps = D3DPSHADECAPS_ALPHAFLATBLEND; + halDesc.dpcTriCaps.dwTextureFilterCaps = D3DPTFILTERCAPS_LINEAR; + + D3DDEVICEDESC helDesc = {}; + + EnumDevice(cb, ctx, "SDL3 GPU HAL", &halDesc, &helDesc, SDL3_GPU_GUID); +} + +Direct3DRMRenderer* Create_Direct3DRMSDL3GPURenderer(DWORD width, DWORD height) +{ + return Direct3DRMSDL3GPURenderer::Create(width, height); +} diff --git a/miniwin/src/d3drm/backends/sdl3gpu/shaders/gencshadersource.py b/miniwin/src/d3drm/backends/sdl3gpu/shaders/gencshadersource.py index 44380521..5fea4c2d 100644 --- a/miniwin/src/d3drm/backends/sdl3gpu/shaders/gencshadersource.py +++ b/miniwin/src/d3drm/backends/sdl3gpu/shaders/gencshadersource.py @@ -44,7 +44,7 @@ def write_generated_warning(f: "io") -> None: f.write("\n") def write_uint8_array(f: "io", variable: str, data: bytes) -> None: - f.write(f"static const Uint8 {variable}[{len(data)}] = {{\n") + f.write(f"static const uint8_t {variable}[{len(data)}] = {{\n") for rowdata in itertools.batched(data, 16): f.write(" "), f.write(", ".join(f"0x{d:02x}" for d in rowdata)) @@ -71,7 +71,7 @@ def write_shader_switch(f: "io", suffix: str, capitalized_stage: str, shader_var f.write(f" *size = SDL_arraysize({var_name}{suffix});\n") f.write(f" return {var_name}{suffix};\n") f.write(f" default:\n") - f.write(f" SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, \"Invalid {capitalized_stage} shader id: %d\", id);\n") + f.write(f" MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, \"Invalid {capitalized_stage} shader id: %d\", id);\n") f.write(f" break;\n") f.write(f" }}\n") @@ -112,7 +112,7 @@ def main() -> None: f.write("// clang-format off\n") f.write("\n") write_generated_warning(f) - f.write("#include \n") + f.write("#include \n") f.write("\n") f.write("// DX only makes sense on Windows platforms\n") f.write("#if defined(SDL_PLATFORM_WINDOWS)\n") @@ -146,7 +146,7 @@ def main() -> None: f.write("// clang-format off\n") f.write("\n") write_generated_warning(f) - f.write("#include \n") + f.write("#include \n") f.write("\n") for str_stage, shader_metadatas in stage_metadatas.items(): if not shader_metadatas: @@ -168,6 +168,8 @@ def main() -> None: f.write(f"#include \"{args.header.name}\"\n\n") for shader_header in args.shader_headers: f.write(f"#include \"{shader_header.name}\"\n") + f.write("\n") + f.write("#include \n") for str_stage, shader_metadatas in stage_metadatas.items(): if not shader_metadatas: @@ -224,7 +226,7 @@ def main() -> None: f.write(f" SDL_assert(id < SDL_arraysize({capitalized_stage}ShaderSPIRVCodes));\n") f.write(f" return &{capitalized_stage}ShaderSPIRVCodes[id];\n") f.write(f" }}\n") - f.write(f" SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, \"Could not find {stage} shader code for id=%d and formats=0x%x\", id, formats);\n") + f.write(f" MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, \"Could not find {stage} shader code for id=%d and formats=0x%x\", id, formats);\n") f.write(f" return nullptr;\n") f.write(f"}}\n") else: diff --git a/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/PositionColor.vert.h b/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/PositionColor.vert.h index d1780e06..edb264c3 100644 --- a/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/PositionColor.vert.h +++ b/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/PositionColor.vert.h @@ -6,11 +6,11 @@ // | This file is auto-generated, do not edit it. | // +==============================================+ -#include +#include // DX only makes sense on Windows platforms #if defined(SDL_PLATFORM_WINDOWS) -static const Uint8 PositionColor_vert_dxil[5132] = { +static const uint8_t PositionColor_vert_dxil[5132] = { 0x44, 0x58, 0x42, 0x43, 0x3d, 0x46, 0xa3, 0x6f, 0xc3, 0x5e, 0x3a, 0xdd, 0xc3, 0xec, 0xef, 0xff, 0x01, 0x5c, 0xdd, 0x16, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x14, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, @@ -333,7 +333,7 @@ static const Uint8 PositionColor_vert_dxil[5132] = { 0x83, 0x3f, 0xcc, 0xc3, 0x37, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x48, 0x49, 0xb8, 0x83, 0x3e, 0xf8, 0x03, 0x3d, 0x6c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; -static const Uint8 PositionColor_vert_dxbc[5044] = { +static const uint8_t PositionColor_vert_dxbc[5044] = { 0x44, 0x58, 0x42, 0x43, 0xeb, 0x74, 0x35, 0xf2, 0x7c, 0x8e, 0xef, 0xa0, 0x42, 0x02, 0x2c, 0x5b, 0xcb, 0x3c, 0xb1, 0x82, 0x01, 0x00, 0x00, 0x00, 0xb4, 0x13, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, @@ -655,7 +655,7 @@ static const Uint8 PositionColor_vert_dxbc[5044] = { // MSL only makes sense on Apple platforms #if defined(SDL_PLATFORM_APPLE) -static const Uint8 PositionColor_vert_msl[1498] = { +static const uint8_t PositionColor_vert_msl[1498] = { 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, @@ -753,7 +753,7 @@ static const Uint8 PositionColor_vert_msl[1498] = { }; #endif -static const Uint8 PositionColor_vert_spirv[1924] = { +static const uint8_t PositionColor_vert_spirv[1924] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, diff --git a/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.cpp b/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.cpp index 6e0e4c50..b0cec9ed 100644 --- a/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.cpp +++ b/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.cpp @@ -9,6 +9,8 @@ #include "PositionColor.vert.h" #include "SolidColor.frag.h" +#include + #if defined(SDL_PLATFORM_WINDOWS) static const SDL_GPUShaderCreateInfo VertexShaderDXILCodes[] = { // VertexShaderId::SolidColor @@ -150,7 +152,7 @@ const SDL_GPUShaderCreateInfo* GetVertexShaderCode(VertexShaderId id, SDL_GPUSha SDL_assert(id < SDL_arraysize(VertexShaderSPIRVCodes)); return &VertexShaderSPIRVCodes[id]; } - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Could not find vertex shader code for id=%d and formats=0x%x", id, formats); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Could not find vertex shader code for id=%d and formats=0x%x", id, formats); return nullptr; } @@ -175,6 +177,6 @@ const SDL_GPUShaderCreateInfo* GetFragmentShaderCode(FragmentShaderId id, SDL_GP SDL_assert(id < SDL_arraysize(FragmentShaderSPIRVCodes)); return &FragmentShaderSPIRVCodes[id]; } - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Could not find fragment shader code for id=%d and formats=0x%x", id, formats); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Could not find fragment shader code for id=%d and formats=0x%x", id, formats); return nullptr; } diff --git a/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.h b/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.h index 63a0788b..5c35cbf1 100644 --- a/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.h +++ b/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/ShaderIndex.h @@ -6,7 +6,7 @@ // | This file is auto-generated, do not edit it. | // +==============================================+ -#include +#include enum VertexShaderId { PositionColor, diff --git a/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/SolidColor.frag.h b/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/SolidColor.frag.h index 4a2500da..993b713d 100644 --- a/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/SolidColor.frag.h +++ b/miniwin/src/d3drm/backends/sdl3gpu/shaders/generated/SolidColor.frag.h @@ -6,11 +6,11 @@ // | This file is auto-generated, do not edit it. | // +==============================================+ -#include +#include // DX only makes sense on Windows platforms #if defined(SDL_PLATFORM_WINDOWS) -static const Uint8 SolidColor_frag_dxil[6644] = { +static const uint8_t SolidColor_frag_dxil[6644] = { 0x44, 0x58, 0x42, 0x43, 0x03, 0x9e, 0xb9, 0x08, 0x94, 0xdb, 0x98, 0x17, 0xee, 0x8d, 0x15, 0x29, 0xe5, 0xfc, 0x81, 0x58, 0x01, 0x00, 0x00, 0x00, 0xf4, 0x19, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, @@ -428,7 +428,7 @@ static const Uint8 SolidColor_frag_dxil[6644] = { 0x80, 0x20, 0x18, 0x20, 0xe9, 0xe1, 0x17, 0xe1, 0x01, 0x1e, 0xb5, 0x81, 0x16, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; -static const Uint8 SolidColor_frag_dxbc[9076] = { +static const uint8_t SolidColor_frag_dxbc[9076] = { 0x44, 0x58, 0x42, 0x43, 0xb6, 0x14, 0xeb, 0xdc, 0x0d, 0x00, 0xf1, 0x17, 0xb0, 0x15, 0x28, 0x34, 0x49, 0x35, 0x0e, 0x89, 0x01, 0x00, 0x00, 0x00, 0x74, 0x23, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0xe0, 0x04, 0x00, 0x00, @@ -1002,7 +1002,7 @@ static const Uint8 SolidColor_frag_dxbc[9076] = { // MSL only makes sense on Apple platforms #if defined(SDL_PLATFORM_APPLE) -static const Uint8 SolidColor_frag_msl[3369] = { +static const uint8_t SolidColor_frag_msl[3369] = { 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x0a, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x0a, 0x0a, @@ -1217,7 +1217,7 @@ static const Uint8 SolidColor_frag_msl[3369] = { }; #endif -static const Uint8 SolidColor_frag_spirv[4580] = { +static const uint8_t SolidColor_frag_spirv[4580] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, diff --git a/miniwin/src/d3drm/backends/software/renderer.cpp b/miniwin/src/d3drm/backends/software/renderer.cpp index 93a80a2e..56e389f3 100644 --- a/miniwin/src/d3drm/backends/software/renderer.cpp +++ b/miniwin/src/d3drm/backends/software/renderer.cpp @@ -5,11 +5,11 @@ #include "meshutils.h" #include "miniwin.h" -#include #include #include #include #include +#include #if defined(__x86_64__) || defined(_M_X64) || defined(__i386__) || defined(_M_IX86) #include #if defined(__i386__) || defined(_M_IX86) @@ -28,7 +28,7 @@ Direct3DRMSoftwareRenderer::Direct3DRMSoftwareRenderer(DWORD width, DWORD height m_virtualWidth = width; m_virtualHeight = height; - m_renderer = SDL_CreateRenderer(DDWindow, NULL); + m_renderer = MORTAR_CreateRenderer(DDWindow); ViewportTransform viewportTransform = {1.0f, 0.0f, 0.0f}; Resize(width, height, viewportTransform); @@ -36,9 +36,9 @@ Direct3DRMSoftwareRenderer::Direct3DRMSoftwareRenderer(DWORD width, DWORD height Direct3DRMSoftwareRenderer::~Direct3DRMSoftwareRenderer() { - SDL_DestroySurface(m_renderedImage); - SDL_DestroyTexture(m_uploadBuffer); - SDL_DestroyRenderer(m_renderer); + MORTAR_DestroySurface(m_renderedImage); + MORTAR_DestroyTexture(m_uploadBuffer); + MORTAR_DestroyRenderer(m_renderer); } void Direct3DRMSoftwareRenderer::PushLights(const SceneLight* lights, size_t count) @@ -65,14 +65,14 @@ void Direct3DRMSoftwareRenderer::ClearZBuffer() size_t i = 0; #if defined(__x86_64__) || defined(_M_X64) || defined(__i386__) || defined(_M_IX86) - if (SDL_HasSSE2()) { + if (MORTAR_HasSSE2()) { __m128 inf4 = _mm_set1_ps(inf); for (; i + 4 <= size; i += 4) { _mm_storeu_ps(&m_zBuffer[i], inf4); } } #if defined(__i386__) || defined(_M_IX86) - else if (SDL_HasMMX()) { + else if (MORTAR_HasMMX()) { const __m64 mm_inf = _mm_set_pi32(0x7F800000, 0x7F800000); for (; i + 2 <= size; i += 2) { *reinterpret_cast<__m64*>(&m_zBuffer[i]) = mm_inf; @@ -81,7 +81,7 @@ void Direct3DRMSoftwareRenderer::ClearZBuffer() } #endif #elif (defined(__arm__) || defined(__aarch64__)) && !defined(__3DS__) - if (SDL_HasNEON()) { + if (MORTAR_HasNEON()) { float32x4_t inf4 = vdupq_n_f32(inf); for (; i + 4 <= size; i += 4) { vst1q_f32(&m_zBuffer[i], inf4); @@ -210,36 +210,36 @@ void Direct3DRMSoftwareRenderer::DrawTriangleClipped(const D3DRMVERTEX (&v)[3], } } -Uint32 Direct3DRMSoftwareRenderer::BlendPixel(Uint8* pixelAddr, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +uint32_t Direct3DRMSoftwareRenderer::BlendPixel(uint8_t* pixelAddr, uint8_t r, uint8_t g, uint8_t b, uint8_t a) { - Uint32 dstPixel; + uint32_t dstPixel; switch (m_bytesPerPixel) { case 1: dstPixel = *pixelAddr; break; case 2: - dstPixel = *(Uint16*) pixelAddr; + dstPixel = *(uint16_t*) pixelAddr; break; case 4: - dstPixel = *(Uint32*) pixelAddr; + dstPixel = *(uint32_t*) pixelAddr; break; } - Uint8 dstR, dstG, dstB, dstA; - SDL_GetRGBA(dstPixel, m_format, m_palette, &dstR, &dstG, &dstB, &dstA); + uint8_t dstR, dstG, dstB, dstA; + MORTAR_GetRGBA(dstPixel, m_format, m_palette, &dstR, &dstG, &dstB, &dstA); float alpha = a / 255.0f; float invAlpha = 1.0f - alpha; - Uint8 outR = static_cast(r * alpha + dstR * invAlpha); - Uint8 outG = static_cast(g * alpha + dstG * invAlpha); - Uint8 outB = static_cast(b * alpha + dstB * invAlpha); - Uint8 outA = static_cast(a + dstA * invAlpha); + uint8_t outR = static_cast(r * alpha + dstR * invAlpha); + uint8_t outG = static_cast(g * alpha + dstG * invAlpha); + uint8_t outB = static_cast(b * alpha + dstB * invAlpha); + uint8_t outA = static_cast(a + dstA * invAlpha); - return SDL_MapRGBA(m_format, m_palette, outR, outG, outB, outA); + return MORTAR_MapRGBA(m_format, m_palette, outR, outG, outB, outA); } -SDL_Color Direct3DRMSoftwareRenderer::ApplyLighting( +MORTAR_Color Direct3DRMSoftwareRenderer::ApplyLighting( const D3DVECTOR& position, const D3DVECTOR& oNormal, const Appearance& appearance @@ -293,17 +293,17 @@ SDL_Color Direct3DRMSoftwareRenderer::ApplyLighting( } } - return SDL_Color{ - static_cast(std::min(255.0f, diffuse.r * appearance.color.r + specular.r * 255.0f)), - static_cast(std::min(255.0f, diffuse.g * appearance.color.g + specular.g * 255.0f)), - static_cast(std::min(255.0f, diffuse.b * appearance.color.b + specular.b * 255.0f)), + return MORTAR_Color{ + static_cast(std::min(255.0f, diffuse.r * appearance.color.r + specular.r * 255.0f)), + static_cast(std::min(255.0f, diffuse.g * appearance.color.g + specular.g * 255.0f)), + static_cast(std::min(255.0f, diffuse.b * appearance.color.b + specular.b * 255.0f)), appearance.color.a }; } struct VertexXY { float x, y, z, w; - SDL_Color color; + MORTAR_Color color; float u_over_w, v_over_w; float one_over_w; }; @@ -319,10 +319,10 @@ VertexXY InterpolateVertex(float y, const VertexXY& v0, const VertexXY& v1) r.x = v0.x + t * (v1.x - v0.x); r.z = v0.z + t * (v1.z - v0.z); r.w = v0.w + t * (v1.w - v0.w); - r.color.r = static_cast(v0.color.r + t * (v1.color.r - v0.color.r)); - r.color.g = static_cast(v0.color.g + t * (v1.color.g - v0.color.g)); - r.color.b = static_cast(v0.color.b + t * (v1.color.b - v0.color.b)); - r.color.a = static_cast(v0.color.a + t * (v1.color.a - v0.color.a)); + r.color.r = static_cast(v0.color.r + t * (v1.color.r - v0.color.r)); + r.color.g = static_cast(v0.color.g + t * (v1.color.g - v0.color.g)); + r.color.b = static_cast(v0.color.b + t * (v1.color.b - v0.color.b)); + r.color.a = static_cast(v0.color.a + t * (v1.color.a - v0.color.a)); r.u_over_w = v0.u_over_w + t * (v1.u_over_w - v0.u_over_w); r.v_over_w = v0.v_over_w + t * (v1.v_over_w - v0.v_over_w); @@ -359,15 +359,15 @@ void Direct3DRMSoftwareRenderer::DrawTriangleProjected( ProjectVertex(v1.position, p1); ProjectVertex(v2.position, p2); - Uint8 r, g, b; - SDL_Color c0 = ApplyLighting(v0.position, v0.normal, appearance); - SDL_Color c1 = {}, c2 = {}; + uint8_t r, g, b; + MORTAR_Color c0 = ApplyLighting(v0.position, v0.normal, appearance); + MORTAR_Color c1 = {}, c2 = {}; if (!appearance.flat) { c1 = ApplyLighting(v1.position, v1.normal, appearance); c2 = ApplyLighting(v2.position, v2.normal, appearance); } - Uint8* pixels = (Uint8*) m_renderedImage->pixels; + uint8_t* pixels = (uint8_t*) m_renderedImage->pixels; int pitch = m_renderedImage->pitch; VertexXY verts[3] = { @@ -376,16 +376,16 @@ void Direct3DRMSoftwareRenderer::DrawTriangleProjected( {p2.x, p2.y, p2.z, p2.w, c2, v2.texCoord.u, v2.texCoord.v} }; - Uint32 textureId = appearance.textureId; + uint32_t textureId = appearance.textureId; int texturePitch; - Uint8* texels = nullptr; + uint8_t* texels = nullptr; int texWidthScale; int texHeightScale; if (textureId != NO_TEXTURE_ID) { - SDL_Surface* texture = m_textures[textureId].cached; + MORTAR_Surface* texture = m_textures[textureId].cached; if (texture) { texturePitch = texture->pitch; - texels = static_cast(texture->pixels); + texels = static_cast(texture->pixels); texWidthScale = texture->w - 1; texHeightScale = texture->h - 1; } @@ -450,20 +450,20 @@ void Direct3DRMSoftwareRenderer::DrawTriangleProjected( continue; } - Uint8 r, g, b; + uint8_t r, g, b; if (appearance.flat) { r = c0.r; g = c0.g; b = c0.b; } else { - r = static_cast(left.color.r + t * (right.color.r - left.color.r)); - g = static_cast(left.color.g + t * (right.color.g - left.color.g)); - b = static_cast(left.color.b + t * (right.color.b - left.color.b)); + r = static_cast(left.color.r + t * (right.color.r - left.color.r)); + g = static_cast(left.color.g + t * (right.color.g - left.color.g)); + b = static_cast(left.color.b + t * (right.color.b - left.color.b)); } - Uint8* pixelAddr = pixels + y * pitch + x * m_bytesPerPixel; - Uint32 finalColor; + uint8_t* pixelAddr = pixels + y * pitch + x * m_bytesPerPixel; + uint32_t finalColor; if (appearance.color.a == 255) { zref = z; @@ -485,23 +485,23 @@ void Direct3DRMSoftwareRenderer::DrawTriangleProjected( int texX = static_cast(u * texWidthScale); int texY = static_cast(v * texHeightScale); - Uint8* texelAddr = texels + texY * texturePitch + texX * m_bytesPerPixel; + uint8_t* texelAddr = texels + texY * texturePitch + texX * m_bytesPerPixel; - Uint32 texelColor; + uint32_t texelColor; switch (m_bytesPerPixel) { case 1: texelColor = *texelAddr; break; case 2: - texelColor = *(Uint16*) texelAddr; + texelColor = *(uint16_t*) texelAddr; break; case 4: - texelColor = *(Uint32*) texelAddr; + texelColor = *(uint32_t*) texelAddr; break; } - Uint8 tr, tg, tb, ta; - SDL_GetRGBA(texelColor, m_format, m_palette, &tr, &tg, &tb, &ta); + uint8_t tr, tg, tb, ta; + MORTAR_GetRGBA(texelColor, m_format, m_palette, &tr, &tg, &tb, &ta); // Multiply vertex color by texel color r = (r * tr + 127) / 255; @@ -509,7 +509,7 @@ void Direct3DRMSoftwareRenderer::DrawTriangleProjected( b = (b * tb + 127) / 255; } - finalColor = SDL_MapRGBA(m_format, m_palette, r, g, b, 255); + finalColor = MORTAR_MapRGBA(m_format, m_palette, r, g, b, 255); } else { finalColor = BlendPixel(pixelAddr, r, g, b, appearance.color.a); @@ -517,13 +517,13 @@ void Direct3DRMSoftwareRenderer::DrawTriangleProjected( switch (m_bytesPerPixel) { case 1: - *pixelAddr = static_cast(finalColor); + *pixelAddr = static_cast(finalColor); break; case 2: - *reinterpret_cast(pixelAddr) = static_cast(finalColor); + *reinterpret_cast(pixelAddr) = static_cast(finalColor); break; case 4: - *reinterpret_cast(pixelAddr) = finalColor; + *reinterpret_cast(pixelAddr) = finalColor; break; } } @@ -532,10 +532,10 @@ void Direct3DRMSoftwareRenderer::DrawTriangleProjected( struct CacheDestroyContext { Direct3DRMSoftwareRenderer* renderer; - Uint32 id; + uint32_t id; }; -void Direct3DRMSoftwareRenderer::AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture) +void Direct3DRMSoftwareRenderer::AddTextureDestroyCallback(uint32_t id, IDirect3DRMTexture* texture) { auto* ctx = new CacheDestroyContext{this, id}; texture->AddDestroyCallback( @@ -543,8 +543,8 @@ void Direct3DRMSoftwareRenderer::AddTextureDestroyCallback(Uint32 id, IDirect3DR auto* ctx = static_cast(arg); auto& cacheEntry = ctx->renderer->m_textures[ctx->id]; if (cacheEntry.cached) { - SDL_UnlockSurface(cacheEntry.cached); - SDL_DestroySurface(cacheEntry.cached); + MORTAR_UnlockSurface(cacheEntry.cached); + MORTAR_DestroySurface(cacheEntry.cached); cacheEntry.cached = nullptr; cacheEntry.texture = nullptr; } @@ -554,31 +554,31 @@ void Direct3DRMSoftwareRenderer::AddTextureDestroyCallback(Uint32 id, IDirect3DR ); } -Uint32 Direct3DRMSoftwareRenderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, float scaleX, float scaleY) +uint32_t Direct3DRMSoftwareRenderer::GetTextureId(IDirect3DRMTexture* iTexture, bool isUI, float scaleX, float scaleY) { auto texture = static_cast(iTexture); auto surface = static_cast(texture->m_surface); // Check if already mapped - for (Uint32 i = 0; i < m_textures.size(); ++i) { + for (uint32_t i = 0; i < m_textures.size(); ++i) { auto& texRef = m_textures[i]; if (texRef.texture == texture) { if (texRef.version != texture->m_version) { // Update animated textures - SDL_DestroySurface(texRef.cached); - texRef.cached = SDL_ConvertSurface(surface->m_surface, m_renderedImage->format); - SDL_LockSurface(texRef.cached); + MORTAR_DestroySurface(texRef.cached); + texRef.cached = MORTAR_ConvertSurface(surface->m_surface, m_renderedImage->format); + MORTAR_LockSurface(texRef.cached); texRef.version = texture->m_version; } return i; } } - SDL_Surface* convertedRender = SDL_ConvertSurface(surface->m_surface, m_renderedImage->format); - SDL_LockSurface(convertedRender); + MORTAR_Surface* convertedRender = MORTAR_ConvertSurface(surface->m_surface, m_renderedImage->format); + MORTAR_LockSurface(convertedRender); // Reuse freed slot - for (Uint32 i = 0; i < m_textures.size(); ++i) { + for (uint32_t i = 0; i < m_textures.size(); ++i) { auto& texRef = m_textures[i]; if (!texRef.texture) { texRef = {texture, texture->m_version, convertedRender}; @@ -589,8 +589,8 @@ Uint32 Direct3DRMSoftwareRenderer::GetTextureId(IDirect3DRMTexture* iTexture, bo // Append new m_textures.push_back({texture, texture->m_version, convertedRender}); - AddTextureDestroyCallback(static_cast(m_textures.size() - 1), texture); - return static_cast(m_textures.size() - 1); + AddTextureDestroyCallback(static_cast(m_textures.size() - 1), texture); + return static_cast(m_textures.size() - 1); } MeshCache UploadMesh(const MeshGroup& meshGroup) @@ -618,7 +618,7 @@ MeshCache UploadMesh(const MeshGroup& meshGroup) return cache; } -void Direct3DRMSoftwareRenderer::AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh) +void Direct3DRMSoftwareRenderer::AddMeshDestroyCallback(uint32_t id, IDirect3DRMMesh* mesh) { auto* ctx = new CacheDestroyContext{this, id}; mesh->AddDestroyCallback( @@ -636,9 +636,9 @@ void Direct3DRMSoftwareRenderer::AddMeshDestroyCallback(Uint32 id, IDirect3DRMMe ); } -Uint32 Direct3DRMSoftwareRenderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) +uint32_t Direct3DRMSoftwareRenderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) { - for (Uint32 i = 0; i < m_meshs.size(); ++i) { + for (uint32_t i = 0; i < m_meshs.size(); ++i) { auto& cache = m_meshs[i]; if (cache.meshGroup == meshGroup) { if (cache.version != meshGroup->version) { @@ -650,7 +650,7 @@ Uint32 Direct3DRMSoftwareRenderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGr auto newCache = UploadMesh(*meshGroup); - for (Uint32 i = 0; i < m_meshs.size(); ++i) { + for (uint32_t i = 0; i < m_meshs.size(); ++i) { auto& cache = m_meshs[i]; if (!cache.meshGroup) { cache = std::move(newCache); @@ -660,19 +660,19 @@ Uint32 Direct3DRMSoftwareRenderer::GetMeshId(IDirect3DRMMesh* mesh, const MeshGr } m_meshs.push_back(std::move(newCache)); - AddMeshDestroyCallback((Uint32) (m_meshs.size() - 1), mesh); - return (Uint32) (m_meshs.size() - 1); + AddMeshDestroyCallback((uint32_t) (m_meshs.size() - 1), mesh); + return (uint32_t) (m_meshs.size() - 1); } HRESULT Direct3DRMSoftwareRenderer::BeginFrame() { - if (!m_renderedImage || !SDL_LockSurface(m_renderedImage)) { + if (!m_renderedImage || !MORTAR_LockSurface(m_renderedImage)) { return DDERR_GENERIC; } ClearZBuffer(); - m_format = SDL_GetPixelFormatDetails(m_renderedImage->format); - m_palette = SDL_GetSurfacePalette(m_renderedImage); + m_format = MORTAR_GetPixelFormatDetails(m_renderedImage->format); + m_palette = MORTAR_GetSurfacePalette(m_renderedImage); m_bytesPerPixel = m_format->bits_per_pixel / 8; return DD_OK; @@ -718,7 +718,7 @@ void Direct3DRMSoftwareRenderer::SubmitDraw( HRESULT Direct3DRMSoftwareRenderer::FinalizeFrame() { - SDL_UnlockSurface(m_renderedImage); + MORTAR_UnlockSurface(m_renderedImage); return DD_OK; } @@ -746,41 +746,40 @@ void Direct3DRMSoftwareRenderer::Resize(int width, int height, const ViewportTra m_viewportTransform.offsetY = (m_height - (m_virtualHeight * m_viewportTransform.scale)) / 2.0f; if (m_renderedImage) { - SDL_DestroySurface(m_renderedImage); + MORTAR_DestroySurface(m_renderedImage); } - m_renderedImage = SDL_CreateSurface(m_width, m_height, SDL_PIXELFORMAT_RGBA32); + m_renderedImage = MORTAR_CreateSurface(m_width, m_height, MORTAR_PIXELFORMAT_RGBA32); if (m_uploadBuffer) { - SDL_DestroyTexture(m_uploadBuffer); + MORTAR_DestroyTexture(m_uploadBuffer); } - m_uploadBuffer = - SDL_CreateTexture(m_renderer, SDL_PIXELFORMAT_RGBA32, SDL_TEXTUREACCESS_STREAMING, m_width, m_height); + m_uploadBuffer = MORTAR_CreateTexture(m_renderer, MORTAR_PIXELFORMAT_RGBA32, m_width, m_height); m_zBuffer.resize(m_width * m_height); } void Direct3DRMSoftwareRenderer::Clear(float r, float g, float b) { - const SDL_PixelFormatDetails* details = SDL_GetPixelFormatDetails(m_renderedImage->format); - Uint32 color = SDL_MapRGB(details, m_palette, r * 255, g * 255, b * 255); - SDL_FillSurfaceRect(m_renderedImage, nullptr, color); + const MORTAR_PixelFormatDetails* details = MORTAR_GetPixelFormatDetails(m_renderedImage->format); + uint32_t color = MORTAR_MapRGB(details, m_palette, r * 255, g * 255, b * 255); + MORTAR_FillSurfaceRect(m_renderedImage, nullptr, color); } void Direct3DRMSoftwareRenderer::Flip() { - SDL_UpdateTexture(m_uploadBuffer, nullptr, m_renderedImage->pixels, m_renderedImage->pitch); - SDL_RenderTexture(m_renderer, m_uploadBuffer, nullptr, nullptr); - SDL_RenderPresent(m_renderer); + MORTAR_UpdateTexture(m_uploadBuffer, nullptr, m_renderedImage->pixels, m_renderedImage->pitch); + MORTAR_RenderTexture(m_renderer, m_uploadBuffer, nullptr, nullptr); + MORTAR_RenderPresent(m_renderer); } void Direct3DRMSoftwareRenderer::Draw2DImage( - Uint32 textureId, - const SDL_Rect& srcRect, - const SDL_Rect& dstRect, + uint32_t textureId, + const MORTAR_Rect& srcRect, + const MORTAR_Rect& dstRect, FColor color ) { - SDL_Rect centeredRect = { + MORTAR_Rect centeredRect = { static_cast(dstRect.x * m_viewportTransform.scale + m_viewportTransform.offsetX), static_cast(dstRect.y * m_viewportTransform.scale + m_viewportTransform.offsetY), static_cast(dstRect.w * m_viewportTransform.scale), @@ -788,44 +787,44 @@ void Direct3DRMSoftwareRenderer::Draw2DImage( }; if (textureId == NO_TEXTURE_ID) { - Uint32 sdlColor = SDL_MapRGBA( + uint32_t sdlColor = MORTAR_MapRGBA( m_format, m_palette, - static_cast(color.r * 255), - static_cast(color.g * 255), - static_cast(color.b * 255), - static_cast(color.a * 255) + static_cast(color.r * 255), + static_cast(color.g * 255), + static_cast(color.b * 255), + static_cast(color.a * 255) ); - SDL_FillSurfaceRect(m_renderedImage, ¢eredRect, sdlColor); + MORTAR_FillSurfaceRect(m_renderedImage, ¢eredRect, sdlColor); return; } bool isUpscaling = centeredRect.w > srcRect.w || centeredRect.h > srcRect.h; - SDL_Surface* surface = m_textures[textureId].cached; - SDL_UnlockSurface(surface); - SDL_BlitSurfaceScaled( + MORTAR_Surface* surface = m_textures[textureId].cached; + MORTAR_UnlockSurface(surface); + MORTAR_BlitSurfaceScaled( surface, &srcRect, m_renderedImage, ¢eredRect, - isUpscaling ? SDL_SCALEMODE_NEAREST : SDL_SCALEMODE_LINEAR + isUpscaling ? MORTAR_SCALEMODE_NEAREST : MORTAR_SCALEMODE_LINEAR ); - SDL_LockSurface(surface); + MORTAR_LockSurface(surface); } void Direct3DRMSoftwareRenderer::SetDither(bool dither) { } -void Direct3DRMSoftwareRenderer::Download(SDL_Surface* target) +void Direct3DRMSoftwareRenderer::Download(MORTAR_Surface* target) { - SDL_Rect srcRect = { + MORTAR_Rect srcRect = { static_cast(m_viewportTransform.offsetX), static_cast(m_viewportTransform.offsetY), static_cast(m_virtualWidth * m_viewportTransform.scale), static_cast(m_virtualHeight * m_viewportTransform.scale), }; - SDL_BlitSurfaceScaled(m_renderedImage, &srcRect, target, nullptr, SDL_SCALEMODE_LINEAR); + MORTAR_BlitSurfaceScaled(m_renderedImage, &srcRect, target, nullptr, MORTAR_SCALEMODE_LINEAR); } diff --git a/miniwin/src/d3drm/d3drm.cpp b/miniwin/src/d3drm/d3drm.cpp index 3b4d5c9d..f271ae0f 100644 --- a/miniwin/src/d3drm/d3drm.cpp +++ b/miniwin/src/d3drm/d3drm.cpp @@ -13,7 +13,8 @@ #include "ddsurface_impl.h" #include "miniwin.h" -#include +#include +#include Direct3DRMPickedArrayImpl::Direct3DRMPickedArrayImpl(const PickRecord* inputPicks, size_t count) { @@ -99,12 +100,12 @@ struct Direct3DRMMaterialImpl : public Direct3DRMObjectBaseImplIUnknown::AddRef(); *ppvObject = static_cast(this); return DD_OK; } - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Direct3DRMImpl does not implement guid"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Direct3DRMImpl does not implement guid"); return E_NOINTERFACE; } @@ -134,11 +135,11 @@ HRESULT Direct3DRMImpl::CreateDeviceFromSurface( IDirect3DMiniwin* miniwind3d = nullptr; dd->QueryInterface(IID_IDirect3DMiniwin, (void**) &miniwind3d); - SDL_assert(miniwind3d); + assert(miniwind3d); DDRenderer = CreateDirect3DRMRenderer(miniwind3d, DDSDesc, guid); if (!DDRenderer) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Device GUID not recognized"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Device GUID not recognized"); return E_NOINTERFACE; } *outDevice = diff --git a/miniwin/src/d3drm/d3drmdevice.cpp b/miniwin/src/d3drm/d3drmdevice.cpp index 3360f9ba..c52d9209 100644 --- a/miniwin/src/d3drm/d3drmdevice.cpp +++ b/miniwin/src/d3drm/d3drmdevice.cpp @@ -8,8 +8,8 @@ #include "miniwin/d3drm.h" #include "miniwin/miniwindevice.h" -#include #include +#include Direct3DRMDevice2Impl::Direct3DRMDevice2Impl(DWORD width, DWORD height, Direct3DRMRenderer* renderer) : m_virtualWidth(width), m_virtualHeight(height), m_renderer(renderer), m_viewports(new Direct3DRMViewportArrayImpl) @@ -32,12 +32,12 @@ Direct3DRMDevice2Impl::~Direct3DRMDevice2Impl() HRESULT Direct3DRMDevice2Impl::QueryInterface(const GUID& riid, void** ppvObject) { - if (SDL_memcmp(&riid, &IID_IDirect3DRMDevice2, sizeof(riid)) == 0) { + if (MORTAR_memcmp(&riid, &IID_IDirect3DRMDevice2, sizeof(riid)) == 0) { this->IUnknown::AddRef(); *ppvObject = static_cast(this); return DD_OK; } - else if (SDL_memcmp(&riid, &IID_IDirect3DRMMiniwinDevice, sizeof(riid)) == 0) { + else if (MORTAR_memcmp(&riid, &IID_IDirect3DRMMiniwinDevice, sizeof(riid)) == 0) { this->IUnknown::AddRef(); *ppvObject = static_cast(this); return DD_OK; @@ -152,7 +152,7 @@ ViewportTransform CalculateViewportTransform(int virtualW, int virtualH, int win void Direct3DRMDevice2Impl::Resize() { - SDL_GetWindowSizeInPixels(DDWindow, &m_windowWidth, &m_windowHeight); + MORTAR_GetWindowSizeInPixels(DDWindow, &m_windowWidth, &m_windowHeight); #ifdef __3DS__ m_windowWidth = 320; // We are on the lower screen m_windowHeight = 240; @@ -169,28 +169,28 @@ void Direct3DRMDevice2Impl::Resize() } } -bool Direct3DRMDevice2Impl::ConvertEventToRenderCoordinates(SDL_Event* event) +bool Direct3DRMDevice2Impl::ConvertEventToRenderCoordinates(MORTAR_Event* event) { switch (event->type) { - case SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED: { + case MORTAR_EVENT_WINDOW_PIXEL_SIZE_CHANGED: { Resize(); break; } - case SDL_EVENT_MOUSE_MOTION: { + case MORTAR_EVENT_MOUSE_MOTION: { event->motion.x = (event->motion.x - m_viewportTransform.offsetX) / m_viewportTransform.scale; event->motion.y = (event->motion.y - m_viewportTransform.offsetY) / m_viewportTransform.scale; break; } - case SDL_EVENT_MOUSE_BUTTON_DOWN: - case SDL_EVENT_MOUSE_BUTTON_UP: { + case MORTAR_EVENT_MOUSE_BUTTON_DOWN: + case MORTAR_EVENT_MOUSE_BUTTON_UP: { event->button.x = (event->button.x - m_viewportTransform.offsetX) / m_viewportTransform.scale; event->button.y = (event->button.y - m_viewportTransform.offsetY) / m_viewportTransform.scale; break; } - case SDL_EVENT_FINGER_MOTION: - case SDL_EVENT_FINGER_DOWN: - case SDL_EVENT_FINGER_UP: - case SDL_EVENT_FINGER_CANCELED: { + case MORTAR_EVENT_FINGER_MOTION: + case MORTAR_EVENT_FINGER_DOWN: + case MORTAR_EVENT_FINGER_UP: + case MORTAR_EVENT_FINGER_CANCELED: { float x = (event->tfinger.x * m_windowWidth - m_viewportTransform.offsetX) / m_viewportTransform.scale; float y = (event->tfinger.y * m_windowHeight - m_viewportTransform.offsetY) / m_viewportTransform.scale; event->tfinger.x = x / m_virtualWidth; @@ -202,10 +202,10 @@ bool Direct3DRMDevice2Impl::ConvertEventToRenderCoordinates(SDL_Event* event) return true; } -bool Direct3DRMDevice2Impl::ConvertRenderToWindowCoordinates(Sint32 inX, Sint32 inY, Sint32& outX, Sint32& outY) +bool Direct3DRMDevice2Impl::ConvertRenderToWindowCoordinates(int inX, int inY, int& outX, int& outY) { - outX = static_cast(inX * m_viewportTransform.scale + m_viewportTransform.offsetX); - outY = static_cast(inY * m_viewportTransform.scale + m_viewportTransform.offsetY); + outX = static_cast(inX * m_viewportTransform.scale + m_viewportTransform.offsetX); + outY = static_cast(inY * m_viewportTransform.scale + m_viewportTransform.offsetY); return true; } diff --git a/miniwin/src/d3drm/d3drmframe.cpp b/miniwin/src/d3drm/d3drmframe.cpp index a5a7f782..9be8f8e0 100644 --- a/miniwin/src/d3drm/d3drmframe.cpp +++ b/miniwin/src/d3drm/d3drmframe.cpp @@ -5,6 +5,7 @@ #include "d3drmvisual_impl.h" #include "miniwin.h" +#include #include Direct3DRMFrameImpl::Direct3DRMFrameImpl(Direct3DRMFrameImpl* parent) @@ -29,15 +30,15 @@ Direct3DRMFrameImpl::~Direct3DRMFrameImpl() HRESULT Direct3DRMFrameImpl::QueryInterface(const GUID& riid, void** ppvObject) { - if (SDL_memcmp(&riid, &IID_IDirect3DRMFrame, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(&riid, &IID_IDirect3DRMFrame, sizeof(GUID)) == 0) { this->IUnknown::AddRef(); *ppvObject = static_cast(this); return S_OK; } - if (SDL_memcmp(&riid, &IID_IDirect3DRMMesh, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(&riid, &IID_IDirect3DRMMesh, sizeof(GUID)) == 0) { return E_NOINTERFACE; } - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Direct3DRMFrameImpl does not implement guid"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Direct3DRMFrameImpl does not implement guid"); return E_NOINTERFACE; } @@ -49,7 +50,7 @@ HRESULT Direct3DRMFrameImpl::AddChild(IDirect3DRMFrame* child) return DD_OK; } auto result = childImpl->m_parent->m_children->DeleteElement(childImpl); - SDL_assert(result == DD_OK); + assert(result == DD_OK); } childImpl->m_parent = this; return m_children->AddElement(child); diff --git a/miniwin/src/d3drm/d3drmmesh.cpp b/miniwin/src/d3drm/d3drmmesh.cpp index d3b48a70..042635ea 100644 --- a/miniwin/src/d3drm/d3drmmesh.cpp +++ b/miniwin/src/d3drm/d3drmmesh.cpp @@ -1,25 +1,26 @@ #include "d3drmmesh_impl.h" #include "miniwin.h" +#include #include HRESULT Direct3DRMMeshImpl::QueryInterface(const GUID& riid, void** ppvObject) { - if (SDL_memcmp(&riid, &IID_IDirect3DRMMesh, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(&riid, &IID_IDirect3DRMMesh, sizeof(GUID)) == 0) { this->IUnknown::AddRef(); *ppvObject = static_cast(this); return S_OK; } - if (SDL_memcmp(&riid, &IID_IDirect3DRMFrame, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(&riid, &IID_IDirect3DRMFrame, sizeof(GUID)) == 0) { return E_NOINTERFACE; } - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Direct3DRMMeshImpl does not implement guid"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Direct3DRMMeshImpl does not implement guid"); return E_NOINTERFACE; } HRESULT Direct3DRMMeshImpl::Clone(int flags, GUID iid, void** object) { - if (!object || SDL_memcmp(&iid, &IID_IDirect3DRMMesh, sizeof(GUID)) != 0) { + if (!object || MORTAR_memcmp(&iid, &IID_IDirect3DRMMesh, sizeof(GUID)) != 0) { return DDERR_INVALIDPARAMS; } @@ -108,10 +109,10 @@ HRESULT Direct3DRMMeshImpl::SetGroupColor(D3DRMGROUPINDEX groupIndex, D3DCOLOR c } m_groups[groupIndex].color = { - static_cast((color >> 16) & 0xFF), - static_cast((color >> 8) & 0xFF), - static_cast((color >> 0) & 0xFF), - static_cast((color >> 24) & 0xFF) + static_cast((color >> 16) & 0xFF), + static_cast((color >> 8) & 0xFF), + static_cast((color >> 0) & 0xFF), + static_cast((color >> 24) & 0xFF) }; return DD_OK; } @@ -122,8 +123,8 @@ HRESULT Direct3DRMMeshImpl::SetGroupColorRGB(D3DRMGROUPINDEX groupIndex, float r return DDERR_INVALIDPARAMS; } - m_groups[groupIndex] - .color = {static_cast(r * 255.0f), static_cast(g * 255.0f), static_cast(b * 255.0f), 255}; + m_groups[groupIndex].color = + {static_cast(r * 255.0f), static_cast(g * 255.0f), static_cast(b * 255.0f), 255}; return DD_OK; } @@ -134,7 +135,7 @@ D3DCOLOR Direct3DRMMeshImpl::GetGroupColor(D3DRMGROUPINDEX index) return 0xFFFFFFFF; } - const SDL_Color& color = m_groups[index].color; + const MORTAR_Color& color = m_groups[index].color; return (color.a << 24) | (color.r << 16) | (color.g << 8) | color.b; } diff --git a/miniwin/src/d3drm/d3drmrenderer.cpp b/miniwin/src/d3drm/d3drmrenderer.cpp index b30c5b23..7d2e604a 100644 --- a/miniwin/src/d3drm/d3drmrenderer.cpp +++ b/miniwin/src/d3drm/d3drmrenderer.cpp @@ -31,17 +31,17 @@ Direct3DRMRenderer* CreateDirect3DRMRenderer( ) { #ifdef USE_SDL_GPU - if (SDL_memcmp(guid, &SDL3_GPU_GUID, sizeof(GUID)) == 0) { - return Direct3DRMSDL3GPURenderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight); + if (MORTAR_memcmp(guid, &SDL3_GPU_GUID, sizeof(GUID)) == 0) { + return Create_Direct3DRMSDL3GPURenderer(DDSDesc.dwWidth, DDSDesc.dwHeight); } #endif #ifdef USE_SOFTWARE_RENDER - if (SDL_memcmp(guid, &SOFTWARE_GUID, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(guid, &SOFTWARE_GUID, sizeof(GUID)) == 0) { return new Direct3DRMSoftwareRenderer(DDSDesc.dwWidth, DDSDesc.dwHeight); } #endif #ifdef USE_OPENGLES3 - if (SDL_memcmp(guid, &OpenGLES3_GUID, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(guid, &OpenGLES3_GUID, sizeof(GUID)) == 0) { return OpenGLES3Renderer::Create( DDSDesc.dwWidth, DDSDesc.dwHeight, @@ -51,27 +51,27 @@ Direct3DRMRenderer* CreateDirect3DRMRenderer( } #endif #ifdef USE_OPENGLES2 - if (SDL_memcmp(guid, &OpenGLES2_GUID, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(guid, &OpenGLES2_GUID, sizeof(GUID)) == 0) { return OpenGLES2Renderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight, d3d->GetAnisotropic()); } #endif #ifdef USE_OPENGL1 - if (SDL_memcmp(guid, &OpenGL1_GUID, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(guid, &OpenGL1_GUID, sizeof(GUID)) == 0) { return OpenGL1Renderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight, d3d->GetMSAASamples()); } #endif #ifdef USE_CITRO3D - if (SDL_memcmp(guid, &Citro3D_GUID, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(guid, &Citro3D_GUID, sizeof(GUID)) == 0) { return new Citro3DRenderer(DDSDesc.dwWidth, DDSDesc.dwHeight); } #endif #ifdef USE_DIRECTX9 - if (SDL_memcmp(guid, &DirectX9_GUID, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(guid, &DirectX9_GUID, sizeof(GUID)) == 0) { return DirectX9Renderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight); } #endif #ifdef USE_GXM - if (SDL_memcmp(guid, &GXM_GUID, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(guid, &GXM_GUID, sizeof(GUID)) == 0) { return GXMRenderer::Create(DDSDesc.dwWidth, DDSDesc.dwHeight, d3d->GetMSAASamples()); } #endif diff --git a/miniwin/src/d3drm/d3drmtexture.cpp b/miniwin/src/d3drm/d3drmtexture.cpp index a5d63588..55b0f1bf 100644 --- a/miniwin/src/d3drm/d3drmtexture.cpp +++ b/miniwin/src/d3drm/d3drmtexture.cpp @@ -23,7 +23,7 @@ Direct3DRMTextureImpl::~Direct3DRMTextureImpl() HRESULT Direct3DRMTextureImpl::QueryInterface(const GUID& riid, void** ppvObject) { - if (SDL_memcmp(&riid, &IID_IDirect3DRMTexture2, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(&riid, &IID_IDirect3DRMTexture2, sizeof(GUID)) == 0) { this->IUnknown::AddRef(); *ppvObject = static_cast(this); return DD_OK; diff --git a/miniwin/src/d3drm/d3drmviewport.cpp b/miniwin/src/d3drm/d3drmviewport.cpp index 93b23175..531c0f26 100644 --- a/miniwin/src/d3drm/d3drmviewport.cpp +++ b/miniwin/src/d3drm/d3drmviewport.cpp @@ -7,12 +7,11 @@ #include "mathutils.h" #include "miniwin.h" -#include -#include #include +#include #include #include -#include +#include Direct3DRMViewportImpl::Direct3DRMViewportImpl(DWORD width, DWORD height, Direct3DRMRenderer* renderer) : m_virtualWidth(width), m_virtualHeight(height), m_renderer(renderer) diff --git a/miniwin/src/ddraw/ddpalette.cpp b/miniwin/src/ddraw/ddpalette.cpp index 80730d2c..8ea37bb8 100644 --- a/miniwin/src/ddraw/ddpalette.cpp +++ b/miniwin/src/ddraw/ddpalette.cpp @@ -1,17 +1,17 @@ #include "ddpalette_impl.h" #include "miniwin/ddraw.h" -#include +#include DirectDrawPaletteImpl::DirectDrawPaletteImpl(LPPALETTEENTRY lpColorTable) { - m_palette = SDL_CreatePalette(256); + m_palette = MORTAR_CreatePalette(256); SetEntries(0, 0, 256, lpColorTable); } DirectDrawPaletteImpl::~DirectDrawPaletteImpl() { - SDL_DestroyPalette(m_palette); + MORTAR_DestroyPalette(m_palette); } HRESULT DirectDrawPaletteImpl::GetEntries(DWORD dwFlags, DWORD dwBase, DWORD dwNumEntries, LPPALETTEENTRY lpEntries) @@ -27,15 +27,15 @@ HRESULT DirectDrawPaletteImpl::GetEntries(DWORD dwFlags, DWORD dwBase, DWORD dwN HRESULT DirectDrawPaletteImpl::SetEntries(DWORD dwFlags, DWORD dwStartingEntry, DWORD dwCount, LPPALETTEENTRY lpEntries) { - SDL_Color colors[256]; + MORTAR_Color colors[256]; for (DWORD i = 0; i < dwCount; i++) { colors[i + dwStartingEntry].r = lpEntries[i].peRed; colors[i + dwStartingEntry].g = lpEntries[i].peGreen; colors[i + dwStartingEntry].b = lpEntries[i].peBlue; - colors[i + dwStartingEntry].a = SDL_ALPHA_OPAQUE; + colors[i + dwStartingEntry].a = MORTAR_ALPHA_OPAQUE; } - SDL_SetPaletteColors(m_palette, colors, dwStartingEntry, dwCount); + MORTAR_SetPaletteColors(m_palette, colors, dwStartingEntry, dwCount); return DD_OK; } diff --git a/miniwin/src/ddraw/ddraw.cpp b/miniwin/src/ddraw/ddraw.cpp index b28a105b..27bbed57 100644 --- a/miniwin/src/ddraw/ddraw.cpp +++ b/miniwin/src/ddraw/ddraw.cpp @@ -7,29 +7,29 @@ #include "miniwin.h" #include "miniwin/d3d.h" -#include #include #include #include #include #include +#include -SDL_Window* DDWindow; +MORTAR_Window* DDWindow; Direct3DRMRenderer* DDRenderer; HRESULT DirectDrawImpl::QueryInterface(const GUID& riid, void** ppvObject) { - if (SDL_memcmp(&riid, &IID_IDirectDraw2, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(&riid, &IID_IDirectDraw2, sizeof(GUID)) == 0) { this->IUnknown::AddRef(); *ppvObject = static_cast(this); return S_OK; } - if (SDL_memcmp(&riid, &IID_IDirect3D2, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(&riid, &IID_IDirect3D2, sizeof(GUID)) == 0) { this->IUnknown::AddRef(); *ppvObject = static_cast(this); return S_OK; } - if (SDL_memcmp(&riid, &IID_IDirect3DMiniwin, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(&riid, &IID_IDirect3DMiniwin, sizeof(GUID)) == 0) { this->IUnknown::AddRef(); *ppvObject = static_cast(this); return S_OK; @@ -72,7 +72,7 @@ HRESULT DirectDrawImpl::CreateSurface( if ((lpDDSurfaceDesc->dwFlags & DDSD_ZBUFFERBITDEPTH) != DDSD_ZBUFFERBITDEPTH) { return DDERR_INVALIDPARAMS; } - SDL_Log("Todo: Set %" PRIu32 "bit Z-Buffer", lpDDSurfaceDesc->dwZBufferBitDepth); + MORTAR_Log("Todo: Set %" PRIu32 "bit Z-Buffer", lpDDSurfaceDesc->dwZBufferBitDepth); *lplpDDSurface = static_cast(new DummySurfaceImpl); return DD_OK; } @@ -91,24 +91,24 @@ HRESULT DirectDrawImpl::CreateSurface( } } - SDL_PixelFormat format; + MORTAR_PixelFormat format; #ifdef MINIWIN_PIXELFORMAT format = MINIWIN_PIXELFORMAT; #else - format = SDL_PIXELFORMAT_RGBA32; + format = MORTAR_PIXELFORMAT_RGBA32; #endif if ((lpDDSurfaceDesc->dwFlags & DDSD_PIXELFORMAT) == DDSD_PIXELFORMAT) { if ((lpDDSurfaceDesc->ddpfPixelFormat.dwFlags & DDPF_RGB) == DDPF_RGB) { int bpp = lpDDSurfaceDesc->ddpfPixelFormat.dwRGBBitCount; - Uint32 rMask = lpDDSurfaceDesc->ddpfPixelFormat.dwRBitMask; - Uint32 gMask = lpDDSurfaceDesc->ddpfPixelFormat.dwGBitMask; - Uint32 bMask = lpDDSurfaceDesc->ddpfPixelFormat.dwBBitMask; - Uint32 aMask = (lpDDSurfaceDesc->ddpfPixelFormat.dwFlags & DDPF_ALPHAPIXELS) == DDPF_ALPHAPIXELS - ? lpDDSurfaceDesc->ddpfPixelFormat.dwRGBAlphaBitMask - : 0; + uint32_t rMask = lpDDSurfaceDesc->ddpfPixelFormat.dwRBitMask; + uint32_t gMask = lpDDSurfaceDesc->ddpfPixelFormat.dwGBitMask; + uint32_t bMask = lpDDSurfaceDesc->ddpfPixelFormat.dwBBitMask; + uint32_t aMask = (lpDDSurfaceDesc->ddpfPixelFormat.dwFlags & DDPF_ALPHAPIXELS) == DDPF_ALPHAPIXELS + ? lpDDSurfaceDesc->ddpfPixelFormat.dwRGBAlphaBitMask + : 0; - format = SDL_GetPixelFormatForMasks(bpp, rMask, gMask, bMask, aMask); - if (format == SDL_PIXELFORMAT_UNKNOWN) { + format = MORTAR_GetPixelFormatForMasks(bpp, rMask, gMask, bMask, aMask); + if (format == MORTAR_PIXELFORMAT_UNKNOWN) { return DDERR_INVALIDPIXELFORMAT; } } @@ -134,18 +134,18 @@ HRESULT DirectDrawImpl::EnumDisplayModes( LPDDENUMMODESCALLBACK lpEnumModesCallback ) { - SDL_DisplayID displayID = SDL_GetPrimaryDisplay(); + MORTAR_DisplayID displayID = MORTAR_GetPrimaryDisplay(); if (!displayID) { return DDERR_GENERIC; } int count_modes; - SDL_DisplayMode** modes = SDL_GetFullscreenDisplayModes(displayID, &count_modes); + MORTAR_DisplayMode** modes = MORTAR_GetFullscreenDisplayModes(displayID, &count_modes); if (!modes) { return DDERR_GENERIC; } - SDL_PixelFormat format; + MORTAR_PixelFormat format; HRESULT status = S_OK; for (int i = 0; i < count_modes; i++) { @@ -155,7 +155,7 @@ HRESULT DirectDrawImpl::EnumDisplayModes( format = modes[i]->format; #endif - const SDL_PixelFormatDetails* details = SDL_GetPixelFormatDetails(format); + const MORTAR_PixelFormatDetails* details = MORTAR_GetPixelFormatDetails(format); if (!details) { continue; } @@ -179,7 +179,7 @@ HRESULT DirectDrawImpl::EnumDisplayModes( status = DDERR_GENERIC; } } - SDL_free(modes); + MORTAR_free(modes); return status; } @@ -216,11 +216,11 @@ void EnumDevice( GUID deviceGuid ) { - char* deviceNameDup = SDL_strdup(name); - char* deviceDescDup = SDL_strdup("Miniwin driver"); + char* deviceNameDup = MORTAR_strdup(name); + char* deviceDescDup = MORTAR_strdup("Miniwin driver"); cb(&deviceGuid, deviceNameDup, deviceDescDup, halDesc, helDesc, ctx); - SDL_free(deviceDescDup); - SDL_free(deviceNameDup); + MORTAR_free(deviceDescDup); + MORTAR_free(deviceNameDup); } HRESULT DirectDrawImpl::EnumDevices(LPD3DENUMDEVICESCALLBACK cb, void* ctx) @@ -231,24 +231,24 @@ HRESULT DirectDrawImpl::EnumDevices(LPD3DENUMDEVICESCALLBACK cb, void* ctx) HRESULT DirectDrawImpl::GetDisplayMode(LPDDSURFACEDESC lpDDSurfaceDesc) { - SDL_DisplayID displayID = SDL_GetPrimaryDisplay(); + MORTAR_DisplayID displayID = MORTAR_GetPrimaryDisplay(); if (!displayID) { return DDERR_GENERIC; } - const SDL_DisplayMode* mode = SDL_GetCurrentDisplayMode(displayID); + const MORTAR_DisplayMode* mode = MORTAR_GetCurrentDisplayMode(displayID); if (!mode) { return DDERR_GENERIC; } - SDL_PixelFormat format; + MORTAR_PixelFormat format; #ifdef MINIWIN_PIXELFORMAT format = MINIWIN_PIXELFORMAT; #else format = mode->format; #endif - const SDL_PixelFormatDetails* details = SDL_GetPixelFormatDetails(format); + const MORTAR_PixelFormatDetails* details = MORTAR_GetPixelFormatDetails(format); lpDDSurfaceDesc->dwFlags = DDSD_WIDTH | DDSD_HEIGHT; lpDDSurfaceDesc->dwWidth = mode->w; @@ -274,11 +274,11 @@ HRESULT DirectDrawImpl::RestoreDisplayMode() HRESULT DirectDrawImpl::SetCooperativeLevel(HWND hWnd, DDSCLFlags dwFlags) { - SDL_Window* sdlWindow = reinterpret_cast(hWnd); + MORTAR_Window* sdlWindow = reinterpret_cast(hWnd); if (m_virtualWidth == 0 || m_virtualHeight == 0) { - if (!SDL_GetWindowSize(sdlWindow, &m_virtualWidth, &m_virtualHeight)) { - SDL_LogError(LOG_CATEGORY_MINIWIN, "SDL_GetWindowSizeInPixels: %s", SDL_GetError()); + if (!MORTAR_GetWindowSize(sdlWindow, &m_virtualWidth, &m_virtualHeight)) { + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "SDL_GetWindowSizeInPixels: %s", MORTAR_GetError()); } } @@ -295,7 +295,7 @@ HRESULT DirectDrawImpl::SetCooperativeLevel(HWND hWnd, DDSCLFlags dwFlags) } #ifndef __EMSCRIPTEN__ - if (!SDL_SetWindowFullscreen(sdlWindow, fullscreen)) { + if (!MORTAR_SetWindowFullscreen(sdlWindow, fullscreen)) { return DDERR_GENERIC; } #endif @@ -324,7 +324,7 @@ HRESULT DirectDrawImpl::CreateDevice( DDRenderer = CreateDirect3DRMRenderer(this, DDSDesc, &guid); if (!DDRenderer) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Device GUID not recognized"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Device GUID not recognized"); return E_NOINTERFACE; } *ppDirect3DDevice = static_cast(DDRenderer); @@ -333,10 +333,10 @@ HRESULT DirectDrawImpl::CreateDevice( HRESULT DirectDrawEnumerate(LPDDENUMCALLBACKA cb, void* context) { - const char* driverName = SDL_GetCurrentVideoDriver(); - char* driverNameDup = SDL_strdup(driverName); + const char* driverName = MORTAR_GetCurrentVideoDriver(); + char* driverNameDup = MORTAR_strdup(driverName); BOOL callback_result = cb(NULL, driverNameDup, NULL, context); - SDL_free(driverNameDup); + MORTAR_free(driverNameDup); if (!callback_result) { return DDERR_GENERIC; } diff --git a/miniwin/src/ddraw/ddsurface.cpp b/miniwin/src/ddraw/ddsurface.cpp index 58ee938a..2e81c8f8 100644 --- a/miniwin/src/ddraw/ddsurface.cpp +++ b/miniwin/src/ddraw/ddsurface.cpp @@ -4,19 +4,20 @@ #include "ddsurface_impl.h" #include "miniwin.h" -#include +#include +#include -DirectDrawSurfaceImpl::DirectDrawSurfaceImpl(int width, int height, SDL_PixelFormat format) +DirectDrawSurfaceImpl::DirectDrawSurfaceImpl(int width, int height, MORTAR_PixelFormat format) { - m_surface = SDL_CreateSurface(width, height, format); + m_surface = MORTAR_CreateSurface(width, height, format); if (!m_surface) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to create surface: %s", SDL_GetError()); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "Failed to create surface: %s", MORTAR_GetError()); } } DirectDrawSurfaceImpl::~DirectDrawSurfaceImpl() { - SDL_DestroySurface(m_surface); + MORTAR_DestroySurface(m_surface); if (m_palette) { m_palette->Release(); } @@ -28,12 +29,12 @@ DirectDrawSurfaceImpl::~DirectDrawSurfaceImpl() // IUnknown interface HRESULT DirectDrawSurfaceImpl::QueryInterface(const GUID& riid, void** ppvObject) { - if (SDL_memcmp(&riid, &IID_IDirectDrawSurface3, sizeof(GUID)) == 0) { + if (MORTAR_memcmp(&riid, &IID_IDirectDrawSurface3, sizeof(GUID)) == 0) { this->IUnknown::AddRef(); *ppvObject = static_cast(this); return S_OK; } - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "DirectDrawSurfaceImpl does not implement guid"); + MORTAR_LogError(MORTAR_LOG_CATEGORY_APPLICATION, "DirectDrawSurfaceImpl does not implement guid"); return E_NOINTERFACE; } @@ -53,43 +54,44 @@ HRESULT DirectDrawSurfaceImpl::Blt( ) { if ((dwFlags & DDBLT_COLORFILL) == DDBLT_COLORFILL) { - Uint8 a = (lpDDBltFx->dwFillColor >> 24) & 0xFF; - Uint8 r = (lpDDBltFx->dwFillColor >> 16) & 0xFF; - Uint8 g = (lpDDBltFx->dwFillColor >> 8) & 0xFF; - Uint8 b = lpDDBltFx->dwFillColor & 0xFF; + uint8_t a = (lpDDBltFx->dwFillColor >> 24) & 0xFF; + uint8_t r = (lpDDBltFx->dwFillColor >> 16) & 0xFF; + uint8_t g = (lpDDBltFx->dwFillColor >> 8) & 0xFF; + uint8_t b = lpDDBltFx->dwFillColor & 0xFF; - const SDL_PixelFormatDetails* details = SDL_GetPixelFormatDetails(m_surface->format); - Uint32 color = SDL_MapRGBA(details, nullptr, r, g, b, a); + const MORTAR_PixelFormatDetails* details = MORTAR_GetPixelFormatDetails(m_surface->format); + uint32_t color = MORTAR_MapRGBA(details, nullptr, r, g, b, a); if (lpDestRect) { - SDL_Rect dstRect = ConvertRect(lpDestRect); - SDL_FillSurfaceRect(m_surface, &dstRect, color); + MORTAR_Rect dstRect = ConvertRect(lpDestRect); + MORTAR_FillSurfaceRect(m_surface, &dstRect, color); } else { - SDL_FillSurfaceRect(m_surface, nullptr, color); + MORTAR_FillSurfaceRect(m_surface, nullptr, color); } return DD_OK; } auto other = static_cast(lpDDSrcSurface); - SDL_Rect srcRect = lpSrcRect ? ConvertRect(lpSrcRect) : SDL_Rect{0, 0, other->m_surface->w, other->m_surface->h}; - SDL_Rect dstRect = lpDestRect ? ConvertRect(lpDestRect) : SDL_Rect{0, 0, m_surface->w, m_surface->h}; + MORTAR_Rect srcRect = + lpSrcRect ? ConvertRect(lpSrcRect) : MORTAR_Rect{0, 0, other->m_surface->w, other->m_surface->h}; + MORTAR_Rect dstRect = lpDestRect ? ConvertRect(lpDestRect) : MORTAR_Rect{0, 0, m_surface->w, m_surface->h}; - SDL_Surface* blitSource = other->m_surface; + MORTAR_Surface* blitSource = other->m_surface; if (other->m_surface->format != m_surface->format) { - blitSource = SDL_ConvertSurface(other->m_surface, m_surface->format); + blitSource = MORTAR_ConvertSurface(other->m_surface, m_surface->format); if (!blitSource) { return DDERR_GENERIC; } } - if (!SDL_BlitSurfaceScaled(blitSource, &srcRect, m_surface, &dstRect, SDL_SCALEMODE_NEAREST)) { + if (!MORTAR_BlitSurfaceScaled(blitSource, &srcRect, m_surface, &dstRect, MORTAR_SCALEMODE_NEAREST)) { return DDERR_GENERIC; } if (blitSource != other->m_surface) { - SDL_DestroySurface(blitSource); + MORTAR_DestroySurface(blitSource); } if (m_texture) { m_texture->Changed(TRUE, FALSE); @@ -146,7 +148,7 @@ HRESULT DirectDrawSurfaceImpl::GetPixelFormat(LPDDPIXELFORMAT lpDDPixelFormat) { memset(lpDDPixelFormat, 0, sizeof(*lpDDPixelFormat)); lpDDPixelFormat->dwFlags = DDPF_RGB | DDPF_ALPHAPIXELS; - const SDL_PixelFormatDetails* details = SDL_GetPixelFormatDetails(m_surface->format); + const MORTAR_PixelFormatDetails* details = MORTAR_GetPixelFormatDetails(m_surface->format); if (details->bits_per_pixel == 8) { lpDDPixelFormat->dwFlags |= DDPF_PALETTEINDEXED8; } @@ -180,7 +182,7 @@ HRESULT DirectDrawSurfaceImpl::Lock( HANDLE hEvent ) { - if (!SDL_LockSurface(m_surface)) { + if (!MORTAR_LockSurface(m_surface)) { return DDERR_GENERIC; } @@ -215,7 +217,7 @@ HRESULT DirectDrawSurfaceImpl::SetColorKey(DDColorKeyFlags dwFlags, LPDDCOLORKEY MINIWIN_NOT_IMPLEMENTED(); } - if (SDL_SetSurfaceColorKey(m_surface, true, lpDDColorKey->dwColorSpaceLowValue) != 0) { + if (MORTAR_SetSurfaceColorKey(m_surface, true, lpDDColorKey->dwColorSpaceLowValue) != 0) { return DDERR_GENERIC; } @@ -224,7 +226,7 @@ HRESULT DirectDrawSurfaceImpl::SetColorKey(DDColorKeyFlags dwFlags, LPDDCOLORKEY HRESULT DirectDrawSurfaceImpl::SetPalette(LPDIRECTDRAWPALETTE lpDDPalette) { - if (m_surface->format != SDL_PIXELFORMAT_INDEX8) { + if (m_surface->format != MORTAR_PIXELFORMAT_INDEX8) { MINIWIN_NOT_IMPLEMENTED(); } @@ -239,13 +241,13 @@ HRESULT DirectDrawSurfaceImpl::SetPalette(LPDIRECTDRAWPALETTE lpDDPalette) } m_palette = lpDDPalette; - SDL_SetSurfacePalette(m_surface, ((DirectDrawPaletteImpl*) m_palette)->m_palette); + MORTAR_SetSurfacePalette(m_surface, ((DirectDrawPaletteImpl*) m_palette)->m_palette); return DD_OK; } HRESULT DirectDrawSurfaceImpl::Unlock(LPVOID lpSurfaceData) { - SDL_UnlockSurface(m_surface); + MORTAR_UnlockSurface(m_surface); if (m_texture) { m_texture->Changed(TRUE, FALSE); } diff --git a/miniwin/src/ddraw/framebuffer.cpp b/miniwin/src/ddraw/framebuffer.cpp index 82022649..acc0baed 100644 --- a/miniwin/src/ddraw/framebuffer.cpp +++ b/miniwin/src/ddraw/framebuffer.cpp @@ -9,7 +9,7 @@ FrameBufferImpl::FrameBufferImpl(DWORD virtualWidth, DWORD virtualHeight) : m_virtualWidth(virtualWidth), m_virtualHeight(virtualHeight) { - m_transferBuffer = new DirectDrawSurfaceImpl(m_virtualWidth, m_virtualHeight, SDL_PIXELFORMAT_RGBA32); + m_transferBuffer = new DirectDrawSurfaceImpl(m_virtualWidth, m_virtualHeight, MORTAR_PIXELFORMAT_RGBA32); } FrameBufferImpl::~FrameBufferImpl() @@ -54,10 +54,10 @@ HRESULT FrameBufferImpl::Blt( } if ((dwFlags & DDBLT_COLORFILL) == DDBLT_COLORFILL) { - Uint8 a = (lpDDBltFx->dwFillColor >> 24) & 0xFF; - Uint8 r = (lpDDBltFx->dwFillColor >> 16) & 0xFF; - Uint8 g = (lpDDBltFx->dwFillColor >> 8) & 0xFF; - Uint8 b = lpDDBltFx->dwFillColor & 0xFF; + uint8_t a = (lpDDBltFx->dwFillColor >> 24) & 0xFF; + uint8_t r = (lpDDBltFx->dwFillColor >> 16) & 0xFF; + uint8_t g = (lpDDBltFx->dwFillColor >> 8) & 0xFF; + uint8_t b = lpDDBltFx->dwFillColor & 0xFF; float fa = a / 255.0f; float fr = r / 255.0f; @@ -65,8 +65,8 @@ HRESULT FrameBufferImpl::Blt( float fb = b / 255.0f; if (lpDestRect) { - SDL_Rect dstRect = ConvertRect(lpDestRect); - DDRenderer->Draw2DImage(NO_TEXTURE_ID, SDL_Rect{}, dstRect, {fr, fg, fb, fa}); + MORTAR_Rect dstRect = ConvertRect(lpDestRect); + DDRenderer->Draw2DImage(NO_TEXTURE_ID, MORTAR_Rect{}, dstRect, {fr, fg, fb, fa}); } else { DDRenderer->Clear(fr, fg, fb); @@ -78,13 +78,13 @@ HRESULT FrameBufferImpl::Blt( if (!surface) { return DDERR_GENERIC; } - SDL_Rect srcRect = - lpSrcRect ? ConvertRect(lpSrcRect) : SDL_Rect{0, 0, surface->m_surface->w, surface->m_surface->h}; - SDL_Rect dstRect = - lpDestRect ? ConvertRect(lpDestRect) : SDL_Rect{0, 0, (int) m_virtualWidth, (int) m_virtualHeight}; + MORTAR_Rect srcRect = + lpSrcRect ? ConvertRect(lpSrcRect) : MORTAR_Rect{0, 0, surface->m_surface->w, surface->m_surface->h}; + MORTAR_Rect dstRect = + lpDestRect ? ConvertRect(lpDestRect) : MORTAR_Rect{0, 0, (int) m_virtualWidth, (int) m_virtualHeight}; float scaleX = (float) dstRect.w / (float) srcRect.w; float scaleY = (float) dstRect.h / (float) srcRect.h; - Uint32 textureId = DDRenderer->GetTextureId(surface->ToTexture(), true, scaleX, scaleY); + uint32_t textureId = DDRenderer->GetTextureId(surface->ToTexture(), true, scaleX, scaleY); DDRenderer->Draw2DImage(textureId, srcRect, dstRect, {1.0f, 1.0f, 1.0f, 1.0f}); return DD_OK; @@ -145,7 +145,7 @@ HRESULT FrameBufferImpl::GetPixelFormat(LPDDPIXELFORMAT lpDDPixelFormat) { memset(lpDDPixelFormat, 0, sizeof(*lpDDPixelFormat)); lpDDPixelFormat->dwFlags = DDPF_RGB | DDPF_ALPHAPIXELS; - const SDL_PixelFormatDetails* details = SDL_GetPixelFormatDetails(m_transferBuffer->m_surface->format); + const MORTAR_PixelFormatDetails* details = MORTAR_GetPixelFormatDetails(m_transferBuffer->m_surface->format); if (details->bits_per_pixel == 8) { lpDDPixelFormat->dwFlags |= DDPF_PALETTEINDEXED8; } @@ -176,10 +176,10 @@ HRESULT FrameBufferImpl::Lock(LPRECT lpDestRect, DDSURFACEDESC* lpDDSurfaceDesc, m_readOnlyLock = (dwFlags & DDLOCK_READONLY) == DDLOCK_READONLY; if ((dwFlags & DDLOCK_WRITEONLY) == DDLOCK_WRITEONLY) { - const SDL_PixelFormatDetails* details = SDL_GetPixelFormatDetails(m_transferBuffer->m_surface->format); - SDL_Palette* palette = m_palette ? static_cast(m_palette)->m_palette : nullptr; - Uint32 color = SDL_MapRGBA(details, palette, 0, 0, 0, 0); - SDL_FillSurfaceRect(m_transferBuffer->m_surface, nullptr, color); + const MORTAR_PixelFormatDetails* details = MORTAR_GetPixelFormatDetails(m_transferBuffer->m_surface->format); + MORTAR_Palette* palette = m_palette ? static_cast(m_palette)->m_palette : nullptr; + uint32_t color = MORTAR_MapRGBA(details, palette, 0, 0, 0, 0); + MORTAR_FillSurfaceRect(m_transferBuffer->m_surface, nullptr, color); } else { DDRenderer->Download(m_transferBuffer->m_surface); @@ -210,7 +210,7 @@ HRESULT FrameBufferImpl::SetColorKey(DDColorKeyFlags dwFlags, LPDDCOLORKEY lpDDC HRESULT FrameBufferImpl::SetPalette(LPDIRECTDRAWPALETTE lpDDPalette) { - if (m_transferBuffer->m_surface->format != SDL_PIXELFORMAT_INDEX8) { + if (m_transferBuffer->m_surface->format != MORTAR_PIXELFORMAT_INDEX8) { MINIWIN_NOT_IMPLEMENTED(); } @@ -221,7 +221,7 @@ HRESULT FrameBufferImpl::SetPalette(LPDIRECTDRAWPALETTE lpDDPalette) } m_palette = lpDDPalette; - SDL_SetSurfacePalette(m_transferBuffer->m_surface, ((DirectDrawPaletteImpl*) m_palette)->m_palette); + MORTAR_SetSurfacePalette(m_transferBuffer->m_surface, ((DirectDrawPaletteImpl*) m_palette)->m_palette); return DD_OK; } diff --git a/miniwin/src/internal/d3drmdevice_impl.h b/miniwin/src/internal/d3drmdevice_impl.h index 46dc5ed2..59b94f44 100644 --- a/miniwin/src/internal/d3drmdevice_impl.h +++ b/miniwin/src/internal/d3drmdevice_impl.h @@ -5,7 +5,7 @@ #include "miniwin/d3drm.h" #include "miniwin/miniwindevice.h" -#include +#include struct Direct3DRMDevice2Impl : public Direct3DRMObjectBaseImpl, public IDirect3DRMMiniwinDevice { Direct3DRMDevice2Impl(DWORD width, DWORD height, Direct3DRMRenderer* renderer); @@ -33,8 +33,8 @@ struct Direct3DRMDevice2Impl : public Direct3DRMObjectBaseImpl struct MeshGroup { - SDL_Color color = {0xFF, 0xFF, 0xFF, 0xFF}; + MORTAR_Color color = {0xFF, 0xFF, 0xFF, 0xFF}; IDirect3DRMTexture* texture = nullptr; IDirect3DRMMaterial* material = nullptr; D3DRMRENDERQUALITY quality = D3DRMRENDER_GOURAUD; diff --git a/miniwin/src/internal/d3drmobject_impl.h b/miniwin/src/internal/d3drmobject_impl.h index 3b4a02f9..f92bdd34 100644 --- a/miniwin/src/internal/d3drmobject_impl.h +++ b/miniwin/src/internal/d3drmobject_impl.h @@ -2,7 +2,7 @@ #include "miniwin/d3drm.h" -#include +#include #include template @@ -11,7 +11,7 @@ struct Direct3DRMObjectBaseImpl : public T { Direct3DRMObjectBaseImpl(const Direct3DRMObjectBaseImpl& other) : m_appData(other.m_appData), T(other) { if (other.m_name) { - m_name = SDL_strdup(other.m_name); + m_name = MORTAR_strdup(other.m_name); } } ULONG Release() override @@ -21,7 +21,7 @@ struct Direct3DRMObjectBaseImpl : public T { it->first(this, it->second); } m_callbacks.clear(); - SDL_free(m_name); + MORTAR_free(m_name); } return this->T::Release(); } @@ -48,10 +48,10 @@ struct Direct3DRMObjectBaseImpl : public T { LPVOID GetAppData() override { return m_appData; } HRESULT SetName(const char* name) override { - SDL_free(m_name); + MORTAR_free(m_name); m_name = NULL; if (name) { - m_name = SDL_strdup(name); + m_name = MORTAR_strdup(name); } return D3DRM_OK; } @@ -61,9 +61,9 @@ struct Direct3DRMObjectBaseImpl : public T { return DDERR_INVALIDPARAMS; } const char* s = m_name ? m_name : ""; - size_t l = SDL_strlen(s); + size_t l = MORTAR_strlen(s); if (name) { - SDL_strlcpy(name, s, *size); + MORTAR_strlcpy(name, s, *size); } else { *size = l + 1; diff --git a/miniwin/src/internal/d3drmrenderer.h b/miniwin/src/internal/d3drmrenderer.h index 7c19a8b4..ab106507 100644 --- a/miniwin/src/internal/d3drmrenderer.h +++ b/miniwin/src/internal/d3drmrenderer.h @@ -7,7 +7,7 @@ #include "miniwin/miniwindevice.h" #include "structs.h" -#include +#include #define NO_TEXTURE_ID 0xffffffff @@ -32,8 +32,13 @@ class Direct3DRMRenderer : public IDirect3DDevice2 { virtual void PushLights(const SceneLight* vertices, size_t count) = 0; virtual void SetProjection(const D3DRMMATRIX4D& projection, D3DVALUE front, D3DVALUE back) = 0; virtual void SetFrustumPlanes(const Plane* frustumPlanes) = 0; - virtual Uint32 GetTextureId(IDirect3DRMTexture* texture, bool isUI = false, float scaleX = 0, float scaleY = 0) = 0; - virtual Uint32 GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) = 0; + virtual uint32_t GetTextureId( + IDirect3DRMTexture* texture, + bool isUI = false, + float scaleX = 0, + float scaleY = 0 + ) = 0; + virtual uint32_t GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) = 0; int GetWidth() { return m_width; } int GetHeight() { return m_height; } int GetVirtualWidth() { return m_virtualWidth; } @@ -52,8 +57,13 @@ class Direct3DRMRenderer : public IDirect3DDevice2 { virtual void Resize(int width, int height, const ViewportTransform& viewportTransform) = 0; virtual void Clear(float r, float g, float b) = 0; virtual void Flip() = 0; - virtual void Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) = 0; - virtual void Download(SDL_Surface* target) = 0; + virtual void Draw2DImage( + uint32_t textureId, + const MORTAR_Rect& srcRect, + const MORTAR_Rect& dstRect, + FColor color + ) = 0; + virtual void Download(MORTAR_Surface* target) = 0; virtual void SetDither(bool dither) = 0; protected: diff --git a/miniwin/src/internal/d3drmrenderer_citro3d.h b/miniwin/src/internal/d3drmrenderer_citro3d.h index 2359a88e..925f7a15 100644 --- a/miniwin/src/internal/d3drmrenderer_citro3d.h +++ b/miniwin/src/internal/d3drmrenderer_citro3d.h @@ -3,15 +3,15 @@ #include "d3drmrenderer.h" #include "ddraw_impl.h" -#include #include +#include #include DEFINE_GUID(Citro3D_GUID, 0x682656F3, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x53); struct C3DTextureCacheEntry { IDirect3DRMTexture* texture; - Uint32 version; + uint32_t version; C3D_Tex c3dTex; uint16_t width; uint16_t height; @@ -32,8 +32,8 @@ class Citro3DRenderer : public Direct3DRMRenderer { void PushLights(const SceneLight* lightsArray, size_t count) override; void SetProjection(const D3DRMMATRIX4D& projection, D3DVALUE front, D3DVALUE back) override; void SetFrustumPlanes(const Plane* frustumPlanes) override; - Uint32 GetTextureId(IDirect3DRMTexture* texture, bool isUI, float scaleX, float scaleY) override; - Uint32 GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; + uint32_t GetTextureId(IDirect3DRMTexture* texture, bool isUI, float scaleX, float scaleY) override; + uint32_t GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; HRESULT BeginFrame() override; void EnableTransparency() override; void SubmitDraw( @@ -48,17 +48,17 @@ class Citro3DRenderer : public Direct3DRMRenderer { void Resize(int width, int height, const ViewportTransform& viewportTransform) override; void Clear(float r, float g, float b) override; void Flip() override; - void Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) override; - void Download(SDL_Surface* target) override; + void Draw2DImage(uint32_t textureId, const MORTAR_Rect& srcRect, const MORTAR_Rect& dstRect, FColor color) override; + void Download(MORTAR_Surface* target) override; void SetDither(bool dither) override; private: - void AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture); - void AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh); + void AddTextureDestroyCallback(uint32_t id, IDirect3DRMTexture* texture); + void AddMeshDestroyCallback(uint32_t id, IDirect3DRMMesh* mesh); void StartFrame(); D3DRMMATRIX4D m_projection; - SDL_Surface* m_renderedImage; + MORTAR_Surface* m_renderedImage; C3D_RenderTarget* m_renderTarget; std::vector m_textures; std::vector m_meshs; diff --git a/miniwin/src/internal/d3drmrenderer_directx9.h b/miniwin/src/internal/d3drmrenderer_directx9.h index 5e87aed3..0a34ef42 100644 --- a/miniwin/src/internal/d3drmrenderer_directx9.h +++ b/miniwin/src/internal/d3drmrenderer_directx9.h @@ -18,8 +18,8 @@ class DirectX9Renderer : public Direct3DRMRenderer { void PushLights(const SceneLight* lightsArray, size_t count) override; void SetProjection(const D3DRMMATRIX4D& projection, D3DVALUE front, D3DVALUE back) override; void SetFrustumPlanes(const Plane* frustumPlanes) override; - Uint32 GetTextureId(IDirect3DRMTexture* texture, bool isUI, float scaleX, float scaleY) override; - Uint32 GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; + uint32_t GetTextureId(IDirect3DRMTexture* texture, bool isUI, float scaleX, float scaleY) override; + uint32_t GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; HRESULT BeginFrame() override; void EnableTransparency() override; void SubmitDraw( @@ -34,15 +34,15 @@ class DirectX9Renderer : public Direct3DRMRenderer { void Resize(int width, int height, const ViewportTransform& viewportTransform) override; void Clear(float r, float g, float b) override; void Flip() override; - void Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) override; - void Download(SDL_Surface* target) override; + void Draw2DImage(uint32_t textureId, const MORTAR_Rect& srcRect, const MORTAR_Rect& dstRect, FColor color) override; + void Download(MORTAR_Surface* target) override; void SetDither(bool dither) override; private: - void AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture); - void AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh); + void AddTextureDestroyCallback(uint32_t id, IDirect3DRMTexture* texture); + void AddMeshDestroyCallback(uint32_t id, IDirect3DRMMesh* mesh); - SDL_Surface* m_renderedImage; + MORTAR_Surface* m_renderedImage; std::vector m_lights; std::vector m_meshs; std::vector m_textures; diff --git a/miniwin/src/internal/d3drmrenderer_gxm.h b/miniwin/src/internal/d3drmrenderer_gxm.h index 1a8fe16c..d6818811 100644 --- a/miniwin/src/internal/d3drmrenderer_gxm.h +++ b/miniwin/src/internal/d3drmrenderer_gxm.h @@ -6,7 +6,7 @@ #include "ddpalette_impl.h" #include "ddraw_impl.h" -#include +#include #include #include #include @@ -21,7 +21,7 @@ DEFINE_GUID(GXM_GUID, 0x682656F3, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, struct GXMTextureCacheEntry { IDirect3DRMTexture* texture; - Uint32 version; + uint32_t version; SceGxmTexture gxmTexture; SceGxmNotification* notification; // latest frame it was used in }; @@ -58,8 +58,8 @@ class GXMRenderer : public Direct3DRMRenderer { void PushLights(const SceneLight* lightsArray, size_t count) override; void SetProjection(const D3DRMMATRIX4D& projection, D3DVALUE front, D3DVALUE back) override; void SetFrustumPlanes(const Plane* frustumPlanes) override; - Uint32 GetTextureId(IDirect3DRMTexture* texture, bool isUi, float scaleX, float scaleY) override; - Uint32 GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; + uint32_t GetTextureId(IDirect3DRMTexture* texture, bool isUi, float scaleX, float scaleY) override; + uint32_t GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; HRESULT BeginFrame() override; void EnableTransparency() override; void SubmitDraw( @@ -74,15 +74,15 @@ class GXMRenderer : public Direct3DRMRenderer { void Resize(int width, int height, const ViewportTransform& viewportTransform) override; void Clear(float r, float g, float b) override; void Flip() override; - void Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) override; - void Download(SDL_Surface* target) override; + void Draw2DImage(uint32_t textureId, const MORTAR_Rect& srcRect, const MORTAR_Rect& dstRect, FColor color) override; + void Download(MORTAR_Surface* target) override; void SetDither(bool dither) override; void DeferredDelete(int index); private: - void AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture); - void AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh); + void AddTextureDestroyCallback(uint32_t id, IDirect3DRMTexture* texture); + void AddMeshDestroyCallback(uint32_t id, IDirect3DRMMesh* mesh); GXMMeshCacheEntry GXMUploadMesh(const MeshGroup& meshGroup); @@ -94,7 +94,7 @@ class GXMRenderer : public Direct3DRMRenderer { GXMVertex2D* verts = &this->quadVertices[this->currentVertexBufferIndex][this->quadsUsed * 4]; this->quadsUsed += 1; if (this->quadsUsed >= 50) { - SDL_Log("QuadVerticesBuffer overflow"); + MORTAR_Log("QuadVerticesBuffer overflow"); this->quadsUsed = 0; // declare bankruptcy } return verts; @@ -173,7 +173,7 @@ inline static void GXMRenderer_EnumDevice(LPD3DENUMDEVICESCALLBACK cb, void* ctx int ret = gxm_library_init(); if (ret < 0) { - SDL_Log("gxm_library_init failed: %08x", ret); + MORTAR_Log("gxm_library_init failed: %08x", ret); return; } diff --git a/miniwin/src/internal/d3drmrenderer_opengl1.h b/miniwin/src/internal/d3drmrenderer_opengl1.h index 894fa10c..fa6c2acb 100644 --- a/miniwin/src/internal/d3drmrenderer_opengl1.h +++ b/miniwin/src/internal/d3drmrenderer_opengl1.h @@ -4,7 +4,7 @@ #include "d3drmtexture_impl.h" #include "ddraw_impl.h" -#include +#include #include DEFINE_GUID(OpenGL1_GUID, 0x682656F3, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03); @@ -12,14 +12,14 @@ DEFINE_GUID(OpenGL1_GUID, 0x682656F3, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x class OpenGL1Renderer : public Direct3DRMRenderer { public: static Direct3DRMRenderer* Create(DWORD width, DWORD height, DWORD msaaSamples); - OpenGL1Renderer(DWORD width, DWORD height, SDL_GLContext context); + OpenGL1Renderer(DWORD width, DWORD height, MORTAR_GLContext context); ~OpenGL1Renderer() override; void PushLights(const SceneLight* lightsArray, size_t count) override; void SetProjection(const D3DRMMATRIX4D& projection, D3DVALUE front, D3DVALUE back) override; void SetFrustumPlanes(const Plane* frustumPlanes) override; - Uint32 GetTextureId(IDirect3DRMTexture* texture, bool isUI, float scaleX, float scaleY) override; - Uint32 GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; + uint32_t GetTextureId(IDirect3DRMTexture* texture, bool isUI, float scaleX, float scaleY) override; + uint32_t GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; HRESULT BeginFrame() override; void EnableTransparency() override; void SubmitDraw( @@ -34,23 +34,23 @@ class OpenGL1Renderer : public Direct3DRMRenderer { void Resize(int width, int height, const ViewportTransform& viewportTransform) override; void Clear(float r, float g, float b) override; void Flip() override; - void Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) override; - void Download(SDL_Surface* target) override; + void Draw2DImage(uint32_t textureId, const MORTAR_Rect& srcRect, const MORTAR_Rect& dstRect, FColor color) override; + void Download(MORTAR_Surface* target) override; void SetDither(bool dither) override; private: - void AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture); - void AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh); + void AddTextureDestroyCallback(uint32_t id, IDirect3DRMTexture* texture); + void AddMeshDestroyCallback(uint32_t id, IDirect3DRMMesh* mesh); std::vector m_textures; std::vector m_meshs; D3DRMMATRIX4D m_projection; - SDL_Surface* m_renderedImage; + MORTAR_Surface* m_renderedImage; bool m_useVBOs; bool m_useNPOT; bool m_dirty = false; std::vector m_lights; - SDL_GLContext m_context; + MORTAR_GLContext m_context; ViewportTransform m_viewportTransform; }; diff --git a/miniwin/src/internal/d3drmrenderer_opengles2.h b/miniwin/src/internal/d3drmrenderer_opengles2.h index fb0e76ac..0eed0401 100644 --- a/miniwin/src/internal/d3drmrenderer_opengles2.h +++ b/miniwin/src/internal/d3drmrenderer_opengles2.h @@ -14,14 +14,14 @@ #else #include #endif -#include +#include #include DEFINE_GUID(OpenGLES2_GUID, 0x682656F3, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06); struct GLES2TextureCacheEntry { IDirect3DRMTexture* texture; - Uint32 version; + uint32_t version; GLuint glTextureId; uint16_t width; uint16_t height; @@ -42,14 +42,14 @@ struct GLES2MeshCacheEntry { class OpenGLES2Renderer : public Direct3DRMRenderer { public: static Direct3DRMRenderer* Create(DWORD width, DWORD height, float anisotropic); - OpenGLES2Renderer(DWORD width, DWORD height, float anisotropic, SDL_GLContext context, GLuint shaderProgram); + OpenGLES2Renderer(DWORD width, DWORD height, float anisotropic, MORTAR_GLContext context, GLuint shaderProgram); ~OpenGLES2Renderer() override; void PushLights(const SceneLight* lightsArray, size_t count) override; void SetProjection(const D3DRMMATRIX4D& projection, D3DVALUE front, D3DVALUE back) override; void SetFrustumPlanes(const Plane* frustumPlanes) override; - Uint32 GetTextureId(IDirect3DRMTexture* texture, bool isUI, float scaleX, float scaleY) override; - Uint32 GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; + uint32_t GetTextureId(IDirect3DRMTexture* texture, bool isUI, float scaleX, float scaleY) override; + uint32_t GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; HRESULT BeginFrame() override; void EnableTransparency() override; void SubmitDraw( @@ -64,24 +64,24 @@ class OpenGLES2Renderer : public Direct3DRMRenderer { void Resize(int width, int height, const ViewportTransform& viewportTransform) override; void Clear(float r, float g, float b) override; void Flip() override; - void Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) override; - void Download(SDL_Surface* target) override; + void Draw2DImage(uint32_t textureId, const MORTAR_Rect& srcRect, const MORTAR_Rect& dstRect, FColor color) override; + void Download(MORTAR_Surface* target) override; void SetDither(bool dither) override; private: - void AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture); - void AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh); - bool UploadTexture(SDL_Surface* source, GLuint& outTexId, bool isUI); + void AddTextureDestroyCallback(uint32_t id, IDirect3DRMTexture* texture); + void AddMeshDestroyCallback(uint32_t id, IDirect3DRMMesh* mesh); + bool UploadTexture(MORTAR_Surface* source, GLuint& outTexId, bool isUI); MeshGroup m_uiMesh; GLES2MeshCacheEntry m_uiMeshCache; std::vector m_textures; std::vector m_meshs; D3DRMMATRIX4D m_projection; - SDL_Surface* m_renderedImage = nullptr; + MORTAR_Surface* m_renderedImage = nullptr; bool m_dirty = false; std::vector m_lights; - SDL_GLContext m_context; + MORTAR_GLContext m_context; float m_anisotropic; GLuint m_fbo; GLuint m_colorTarget; diff --git a/miniwin/src/internal/d3drmrenderer_opengles3.h b/miniwin/src/internal/d3drmrenderer_opengles3.h index 419cd5c1..9e46d3e1 100644 --- a/miniwin/src/internal/d3drmrenderer_opengles3.h +++ b/miniwin/src/internal/d3drmrenderer_opengles3.h @@ -14,14 +14,14 @@ #else #include #endif -#include +#include #include DEFINE_GUID(OpenGLES3_GUID, 0x682656F3, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04); struct GLES3TextureCacheEntry { IDirect3DRMTexture* texture; - Uint32 version; + uint32_t version; GLuint glTextureId; uint16_t width; uint16_t height; @@ -48,7 +48,7 @@ class OpenGLES3Renderer : public Direct3DRMRenderer { DWORD height, DWORD msaaSamples, float anisotropic, - SDL_GLContext context, + MORTAR_GLContext context, GLuint shaderProgram ); ~OpenGLES3Renderer() override; @@ -56,8 +56,8 @@ class OpenGLES3Renderer : public Direct3DRMRenderer { void PushLights(const SceneLight* lightsArray, size_t count) override; void SetProjection(const D3DRMMATRIX4D& projection, D3DVALUE front, D3DVALUE back) override; void SetFrustumPlanes(const Plane* frustumPlanes) override; - Uint32 GetTextureId(IDirect3DRMTexture* texture, bool isUI, float scaleX, float scaleY) override; - Uint32 GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; + uint32_t GetTextureId(IDirect3DRMTexture* texture, bool isUI, float scaleX, float scaleY) override; + uint32_t GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; HRESULT BeginFrame() override; void EnableTransparency() override; void SubmitDraw( @@ -72,25 +72,25 @@ class OpenGLES3Renderer : public Direct3DRMRenderer { void Resize(int width, int height, const ViewportTransform& viewportTransform) override; void Clear(float r, float g, float b) override; void Flip() override; - void Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) override; - void Download(SDL_Surface* target) override; + void Draw2DImage(uint32_t textureId, const MORTAR_Rect& srcRect, const MORTAR_Rect& dstRect, FColor color) override; + void Download(MORTAR_Surface* target) override; void SetDither(bool dither) override; private: - void AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture); - void AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh); + void AddTextureDestroyCallback(uint32_t id, IDirect3DRMTexture* texture); + void AddMeshDestroyCallback(uint32_t id, IDirect3DRMMesh* mesh); GLES3MeshCacheEntry GLES3UploadMesh(const MeshGroup& meshGroup, bool forceUV = false); - bool UploadTexture(SDL_Surface* source, GLuint& outTexId, bool isUI); + bool UploadTexture(MORTAR_Surface* source, GLuint& outTexId, bool isUI); MeshGroup m_uiMesh; GLES3MeshCacheEntry m_uiMeshCache; std::vector m_textures; std::vector m_meshs; D3DRMMATRIX4D m_projection; - SDL_Surface* m_renderedImage = nullptr; + MORTAR_Surface* m_renderedImage = nullptr; bool m_dirty = false; std::vector m_lights; - SDL_GLContext m_context; + MORTAR_GLContext m_context; uint32_t m_msaa; float m_anisotropic; GLuint m_fbo; diff --git a/miniwin/src/internal/d3drmrenderer_sdl3gpu.h b/miniwin/src/internal/d3drmrenderer_sdl3gpu.h index 55f8233a..6b2e1f6e 100644 --- a/miniwin/src/internal/d3drmrenderer_sdl3gpu.h +++ b/miniwin/src/internal/d3drmrenderer_sdl3gpu.h @@ -5,145 +5,10 @@ #include "ddraw_impl.h" #include "ddsurface_impl.h" -#include #include DEFINE_GUID(SDL3_GPU_GUID, 0x682656F3, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01); -typedef struct { - D3DRMMATRIX4D projection; - D3DRMMATRIX4D worldViewMatrix; - D3DRMMATRIX4D normalMatrix; -} ViewportUniforms; -static_assert(sizeof(ViewportUniforms) % 16 == 0); -static_assert(sizeof(ViewportUniforms) == 192); +extern Direct3DRMRenderer* Create_Direct3DRMSDL3GPURenderer(DWORD width, DWORD height); -struct FragmentShadingData { - SceneLight lights[3]; - int lightCount; - float shininess; - SDL_Color color; - int useTexture; -}; -static_assert(sizeof(FragmentShadingData) % 16 == 0); -static_assert(sizeof(FragmentShadingData) == 160); - -struct SDL3TextureCache { - Direct3DRMTextureImpl* texture; - Uint32 version; - SDL_GPUTexture* gpuTexture; -}; - -struct SDL3MeshCache { - const MeshGroup* meshGroup; - int version; - SDL_GPUBuffer* vertexBuffer; - SDL_GPUBuffer* indexBuffer; - size_t indexCount; -}; - -class Direct3DRMSDL3GPURenderer : public Direct3DRMRenderer { -public: - static Direct3DRMRenderer* Create(DWORD width, DWORD height); - ~Direct3DRMSDL3GPURenderer() override; - void PushLights(const SceneLight* vertices, size_t count) override; - Uint32 GetTextureId(IDirect3DRMTexture* texture, bool isUI, float scaleX, float scaleY) override; - Uint32 GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; - void SetProjection(const D3DRMMATRIX4D& projection, D3DVALUE front, D3DVALUE back) override; - void SetFrustumPlanes(const Plane* frustumPlanes) override; - HRESULT BeginFrame() override; - void EnableTransparency() override; - void SubmitDraw( - DWORD meshId, - const D3DRMMATRIX4D& modelViewMatrix, - const D3DRMMATRIX4D& worldMatrix, - const D3DRMMATRIX4D& viewMatrix, - const Matrix3x3& normalMatrix, - const Appearance& appearance - ) override; - HRESULT FinalizeFrame() override; - void Resize(int width, int height, const ViewportTransform& viewportTransform) override; - void Clear(float r, float g, float b) override; - void Flip() override; - void Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) override; - void Download(SDL_Surface* target) override; - void SetDither(bool dither) override; - -private: - Direct3DRMSDL3GPURenderer( - DWORD width, - DWORD height, - SDL_GPUDevice* device, - SDL_GPUGraphicsPipeline* opaquePipeline, - SDL_GPUGraphicsPipeline* transparentPipeline, - SDL_GPUGraphicsPipeline* uiPipeline, - SDL_GPUSampler* sampler, - SDL_GPUSampler* uiSampler, - SDL_GPUTransferBuffer* uploadBuffer, - int uploadBufferSize - ); - void StartRenderPass(float r, float g, float b, bool clear); - void WaitForPendingUpload(); - void AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture); - SDL_GPUTransferBuffer* GetUploadBuffer(size_t size); - SDL_GPUTexture* CreateTextureFromSurface(SDL_Surface* surface); - void AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh); - SDL3MeshCache UploadMesh(const MeshGroup& meshGroup); - - MeshGroup m_uiMesh; - SDL3MeshCache m_uiMeshCache; - D3DVALUE m_front; - D3DVALUE m_back; - ViewportUniforms m_uniforms; - FragmentShadingData m_fragmentShadingData; - D3DDEVICEDESC m_desc; - D3DRMMATRIX4D m_projection; - std::vector m_textures; - std::vector m_meshs; - SDL_GPUDevice* m_device; - SDL_GPUGraphicsPipeline* m_opaquePipeline; - SDL_GPUGraphicsPipeline* m_transparentPipeline; - SDL_GPUGraphicsPipeline* m_uiPipeline; - SDL_GPUTexture* m_transferTexture = nullptr; - SDL_GPUTexture* m_depthTexture = nullptr; - SDL_GPUTexture* m_dummyTexture; - int m_uploadBufferSize; - SDL_GPUTransferBuffer* m_uploadBuffer; - SDL_GPUTransferBuffer* m_downloadBuffer = nullptr; - SDL_GPUBuffer* m_vertexBuffer = nullptr; - SDL_GPUSampler* m_sampler; - SDL_GPUSampler* m_uiSampler; - SDL_GPUCommandBuffer* m_cmdbuf = nullptr; - SDL_GPURenderPass* m_renderPass = nullptr; - SDL_GPUFence* m_uploadFence = nullptr; -}; - -inline static void Direct3DRMSDL3GPU_EnumDevice(LPD3DENUMDEVICESCALLBACK cb, void* ctx) -{ -#ifdef __APPLE__ - SDL_GPUDevice* device = SDL_CreateGPUDevice(SDL_GPU_SHADERFORMAT_MSL, false, nullptr); - if (!device) { - return; - } - SDL_DestroyGPUDevice(device); -#else - Direct3DRMRenderer* device = Direct3DRMSDL3GPURenderer::Create(640, 480); - if (!device) { - return; - } - device->Release(); -#endif - - D3DDEVICEDESC halDesc = {}; - halDesc.dcmColorModel = D3DCOLOR_RGB; - halDesc.dwFlags = D3DDD_DEVICEZBUFFERBITDEPTH; - halDesc.dwDeviceZBufferBitDepth = DDBD_32; - halDesc.dwDeviceRenderBitDepth = DDBD_32; - halDesc.dpcTriCaps.dwTextureCaps = D3DPTEXTURECAPS_PERSPECTIVE; - halDesc.dpcTriCaps.dwShadeCaps = D3DPSHADECAPS_ALPHAFLATBLEND; - halDesc.dpcTriCaps.dwTextureFilterCaps = D3DPTFILTERCAPS_LINEAR; - - D3DDEVICEDESC helDesc = {}; - - EnumDevice(cb, ctx, "SDL3 GPU HAL", &halDesc, &helDesc, SDL3_GPU_GUID); -} +extern void Direct3DRMSDL3GPU_EnumDevice(LPD3DENUMDEVICESCALLBACK cb, void* ctx); diff --git a/miniwin/src/internal/d3drmrenderer_sdl3gpu_priv.h b/miniwin/src/internal/d3drmrenderer_sdl3gpu_priv.h new file mode 100644 index 00000000..c93e1eba --- /dev/null +++ b/miniwin/src/internal/d3drmrenderer_sdl3gpu_priv.h @@ -0,0 +1,118 @@ +#pragma once + +#include "d3drmrenderer.h" +#include "d3drmrenderer_sdl3gpu.h" +#include "d3drmtexture_impl.h" +#include "ddraw_impl.h" +#include "ddsurface_impl.h" + +#include +#include + +typedef struct { + D3DRMMATRIX4D projection; + D3DRMMATRIX4D worldViewMatrix; + D3DRMMATRIX4D normalMatrix; +} ViewportUniforms; +static_assert(sizeof(ViewportUniforms) % 16 == 0); +static_assert(sizeof(ViewportUniforms) == 192); + +struct FragmentShadingData { + SceneLight lights[3]; + int lightCount; + float shininess; + SDL_Color color; + int useTexture; +}; +static_assert(sizeof(FragmentShadingData) % 16 == 0); +static_assert(sizeof(FragmentShadingData) == 160); + +struct SDL3TextureCache { + Direct3DRMTextureImpl* texture; + uint32_t version; + SDL_GPUTexture* gpuTexture; +}; + +struct SDL3MeshCache { + const MeshGroup* meshGroup; + int version; + SDL_GPUBuffer* vertexBuffer; + SDL_GPUBuffer* indexBuffer; + size_t indexCount; +}; + +class Direct3DRMSDL3GPURenderer : public Direct3DRMRenderer { +public: + static Direct3DRMRenderer* Create(DWORD width, DWORD height); + ~Direct3DRMSDL3GPURenderer() override; + void PushLights(const SceneLight* vertices, size_t count) override; + uint32_t GetTextureId(IDirect3DRMTexture* texture, bool isUI, float scaleX, float scaleY) override; + uint32_t GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; + void SetProjection(const D3DRMMATRIX4D& projection, D3DVALUE front, D3DVALUE back) override; + void SetFrustumPlanes(const Plane* frustumPlanes) override; + HRESULT BeginFrame() override; + void EnableTransparency() override; + void SubmitDraw( + DWORD meshId, + const D3DRMMATRIX4D& modelViewMatrix, + const D3DRMMATRIX4D& worldMatrix, + const D3DRMMATRIX4D& viewMatrix, + const Matrix3x3& normalMatrix, + const Appearance& appearance + ) override; + HRESULT FinalizeFrame() override; + void Resize(int width, int height, const ViewportTransform& viewportTransform) override; + void Clear(float r, float g, float b) override; + void Flip() override; + void Draw2DImage(uint32_t textureId, const MORTAR_Rect& srcRect, const MORTAR_Rect& dstRect, FColor color) override; + void Download(MORTAR_Surface* target) override; + void SetDither(bool dither) override; + +private: + Direct3DRMSDL3GPURenderer( + DWORD width, + DWORD height, + SDL_GPUDevice* device, + SDL_GPUGraphicsPipeline* opaquePipeline, + SDL_GPUGraphicsPipeline* transparentPipeline, + SDL_GPUGraphicsPipeline* uiPipeline, + SDL_GPUSampler* sampler, + SDL_GPUSampler* uiSampler, + SDL_GPUTransferBuffer* uploadBuffer, + int uploadBufferSize + ); + void StartRenderPass(float r, float g, float b, bool clear); + void WaitForPendingUpload(); + void AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture); + SDL_GPUTransferBuffer* GetUploadBuffer(size_t size); + SDL_GPUTexture* CreateTextureFromSurface(SDL_Surface* surface); + void AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh); + SDL3MeshCache UploadMesh(const MeshGroup& meshGroup); + + MeshGroup m_uiMesh; + SDL3MeshCache m_uiMeshCache; + D3DVALUE m_front; + D3DVALUE m_back; + ViewportUniforms m_uniforms; + FragmentShadingData m_fragmentShadingData; + D3DDEVICEDESC m_desc; + D3DRMMATRIX4D m_projection; + std::vector m_textures; + std::vector m_meshs; + SDL_GPUDevice* m_device; + SDL_GPUGraphicsPipeline* m_opaquePipeline; + SDL_GPUGraphicsPipeline* m_transparentPipeline; + SDL_GPUGraphicsPipeline* m_uiPipeline; + SDL_GPUTexture* m_transferTexture = nullptr; + SDL_GPUTexture* m_depthTexture = nullptr; + SDL_GPUTexture* m_dummyTexture; + int m_uploadBufferSize; + SDL_GPUTransferBuffer* m_uploadBuffer; + SDL_GPUTransferBuffer* m_downloadBuffer = nullptr; + SDL_GPUBuffer* m_vertexBuffer = nullptr; + SDL_GPUSampler* m_sampler; + SDL_GPUSampler* m_uiSampler; + SDL_GPUCommandBuffer* m_cmdbuf = nullptr; + SDL_GPURenderPass* m_renderPass = nullptr; + SDL_GPUFence* m_uploadFence = nullptr; +}; diff --git a/miniwin/src/internal/d3drmrenderer_software.h b/miniwin/src/internal/d3drmrenderer_software.h index 0c422597..544c36cf 100644 --- a/miniwin/src/internal/d3drmrenderer_software.h +++ b/miniwin/src/internal/d3drmrenderer_software.h @@ -4,16 +4,16 @@ #include "d3drmtexture_impl.h" #include "ddraw_impl.h" -#include #include +#include #include DEFINE_GUID(SOFTWARE_GUID, 0x682656F3, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02); struct TextureCache { Direct3DRMTextureImpl* texture; - Uint8 version; - SDL_Surface* cached; + uint8_t version; + MORTAR_Surface* cached; }; struct MeshCache { @@ -29,8 +29,8 @@ class Direct3DRMSoftwareRenderer : public Direct3DRMRenderer { Direct3DRMSoftwareRenderer(DWORD width, DWORD height); ~Direct3DRMSoftwareRenderer() override; void PushLights(const SceneLight* vertices, size_t count) override; - Uint32 GetTextureId(IDirect3DRMTexture* texture, bool isUI, float scaleX, float scaleY) override; - Uint32 GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; + uint32_t GetTextureId(IDirect3DRMTexture* texture, bool isUI, float scaleX, float scaleY) override; + uint32_t GetMeshId(IDirect3DRMMesh* mesh, const MeshGroup* meshGroup) override; void SetProjection(const D3DRMMATRIX4D& projection, D3DVALUE front, D3DVALUE back) override; void SetFrustumPlanes(const Plane* frustumPlanes) override; HRESULT BeginFrame() override; @@ -47,8 +47,8 @@ class Direct3DRMSoftwareRenderer : public Direct3DRMRenderer { void Resize(int width, int height, const ViewportTransform& viewportTransform) override; void Clear(float r, float g, float b) override; void Flip() override; - void Draw2DImage(Uint32 textureId, const SDL_Rect& srcRect, const SDL_Rect& dstRect, FColor color) override; - void Download(SDL_Surface* target) override; + void Draw2DImage(uint32_t textureId, const MORTAR_Rect& srcRect, const MORTAR_Rect& dstRect, FColor color) override; + void Download(MORTAR_Surface* target) override; void SetDither(bool dither) override; private: @@ -61,16 +61,16 @@ class Direct3DRMSoftwareRenderer : public Direct3DRMRenderer { ); void DrawTriangleClipped(const D3DRMVERTEX (&v)[3], const Appearance& appearance); void ProjectVertex(const D3DVECTOR& v, D3DRMVECTOR4D& p) const; - Uint32 BlendPixel(Uint8* pixelAddr, Uint8 r, Uint8 g, Uint8 b, Uint8 a); - SDL_Color ApplyLighting(const D3DVECTOR& position, const D3DVECTOR& normal, const Appearance& appearance); - void AddTextureDestroyCallback(Uint32 id, IDirect3DRMTexture* texture); - void AddMeshDestroyCallback(Uint32 id, IDirect3DRMMesh* mesh); + uint32_t BlendPixel(uint8_t* pixelAddr, uint8_t r, uint8_t g, uint8_t b, uint8_t a); + MORTAR_Color ApplyLighting(const D3DVECTOR& position, const D3DVECTOR& normal, const Appearance& appearance); + void AddTextureDestroyCallback(uint32_t id, IDirect3DRMTexture* texture); + void AddMeshDestroyCallback(uint32_t id, IDirect3DRMMesh* mesh); - SDL_Surface* m_renderedImage = nullptr; - SDL_Palette* m_palette; - SDL_Texture* m_uploadBuffer = nullptr; - SDL_Renderer* m_renderer; - const SDL_PixelFormatDetails* m_format; + MORTAR_Surface* m_renderedImage = nullptr; + MORTAR_Palette* m_palette = nullptr; + MORTAR_Texture* m_uploadBuffer = nullptr; + MORTAR_Renderer* m_renderer; + const MORTAR_PixelFormatDetails* m_format; int m_bytesPerPixel; std::vector m_lights; std::vector m_textures; diff --git a/miniwin/src/internal/d3drmtexture_impl.h b/miniwin/src/internal/d3drmtexture_impl.h index 35ef7779..34b8c243 100644 --- a/miniwin/src/internal/d3drmtexture_impl.h +++ b/miniwin/src/internal/d3drmtexture_impl.h @@ -10,6 +10,6 @@ struct Direct3DRMTextureImpl : public Direct3DRMObjectBaseImpl +#include #include struct DeferredDrawCommand { diff --git a/miniwin/src/internal/ddpalette_impl.h b/miniwin/src/internal/ddpalette_impl.h index 27c71ff6..3d3bebfd 100644 --- a/miniwin/src/internal/ddpalette_impl.h +++ b/miniwin/src/internal/ddpalette_impl.h @@ -8,5 +8,5 @@ struct DirectDrawPaletteImpl : public IDirectDrawPalette { HRESULT GetEntries(DWORD dwFlags, DWORD dwBase, DWORD dwNumEntries, LPPALETTEENTRY lpEntries) override; HRESULT SetEntries(DWORD dwFlags, DWORD dwStartingEntry, DWORD dwCount, LPPALETTEENTRY lpEntries) override; - SDL_Palette* m_palette; + MORTAR_Palette* m_palette; }; diff --git a/miniwin/src/internal/ddraw_impl.h b/miniwin/src/internal/ddraw_impl.h index 0da2d883..dbcaf7d4 100644 --- a/miniwin/src/internal/ddraw_impl.h +++ b/miniwin/src/internal/ddraw_impl.h @@ -6,12 +6,12 @@ #include "miniwin/ddraw.h" #include "miniwin/miniwind3d.h" -#include +#include -extern SDL_Window* DDWindow; +extern MORTAR_Window* DDWindow; extern Direct3DRMRenderer* DDRenderer; -inline static SDL_Rect ConvertRect(const RECT* r) +inline static MORTAR_Rect ConvertRect(const RECT* r) { return {r->left, r->top, r->right - r->left, r->bottom - r->top}; } diff --git a/miniwin/src/internal/ddsurface_impl.h b/miniwin/src/internal/ddsurface_impl.h index 62fab18a..b7550201 100644 --- a/miniwin/src/internal/ddsurface_impl.h +++ b/miniwin/src/internal/ddsurface_impl.h @@ -1,10 +1,10 @@ #pragma once -#include #include +#include struct DirectDrawSurfaceImpl : public IDirectDrawSurface3 { - DirectDrawSurfaceImpl(int width, int height, SDL_PixelFormat format); + DirectDrawSurfaceImpl(int width, int height, MORTAR_PixelFormat format); ~DirectDrawSurfaceImpl() override; // IUnknown interface @@ -37,7 +37,7 @@ struct DirectDrawSurfaceImpl : public IDirectDrawSurface3 { IDirect3DRMTexture2* ToTexture(); - SDL_Surface* m_surface = nullptr; + MORTAR_Surface* m_surface = nullptr; private: IDirect3DRMTexture2* m_texture = nullptr; diff --git a/miniwin/src/internal/framebuffer_impl.h b/miniwin/src/internal/framebuffer_impl.h index 47805e69..f84bc059 100644 --- a/miniwin/src/internal/framebuffer_impl.h +++ b/miniwin/src/internal/framebuffer_impl.h @@ -1,8 +1,8 @@ #pragma once -#include #include #include +#include struct FrameBufferImpl : public IDirectDrawSurface3 { FrameBufferImpl(DWORD virtualWidth, DWORD virtualHeight); diff --git a/miniwin/src/internal/meshutils.cpp b/miniwin/src/internal/meshutils.cpp index e0ce59e6..4493e9b8 100644 --- a/miniwin/src/internal/meshutils.cpp +++ b/miniwin/src/internal/meshutils.cpp @@ -77,7 +77,7 @@ void FlattenSurfaces( } void Create2DTransformMatrix( - const SDL_Rect& dstRect, + const MORTAR_Rect& dstRect, float scale, float offsetX, float offsetY, diff --git a/miniwin/src/internal/meshutils.h b/miniwin/src/internal/meshutils.h index 12c509ad..1c158665 100644 --- a/miniwin/src/internal/meshutils.h +++ b/miniwin/src/internal/meshutils.h @@ -15,7 +15,7 @@ void FlattenSurfaces( ); void Create2DTransformMatrix( - const SDL_Rect& dstRect, + const MORTAR_Rect& dstRect, float scale, float offsetX, float offsetY, diff --git a/miniwin/src/internal/miniwin.h b/miniwin/src/internal/miniwin.h index 1bf0a905..a1ce9dfb 100644 --- a/miniwin/src/internal/miniwin.h +++ b/miniwin/src/internal/miniwin.h @@ -1,8 +1,8 @@ #pragma once -#include +#include -#define LOG_CATEGORY_MINIWIN (SDL_LOG_CATEGORY_CUSTOM) +#define LOG_CATEGORY_MINIWIN (MORTAR_LOG_CATEGORY_CUSTOM) #ifdef _MSC_VER #define MINIWIN_PRETTY_FUNCTION __FUNCSIG__ @@ -14,17 +14,17 @@ do { \ static bool visited = false; \ if (!visited) { \ - SDL_LogError(LOG_CATEGORY_MINIWIN, "%s: Not implemented", MINIWIN_PRETTY_FUNCTION); \ + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "%s: Not implemented", MINIWIN_PRETTY_FUNCTION); \ visited = true; \ } \ } while (0) #define MINIWIN_ERROR(MSG) \ do { \ - SDL_LogError(LOG_CATEGORY_MINIWIN, "%s: %s", __func__, MSG); \ + MORTAR_LogError(LOG_CATEGORY_MINIWIN, "%s: %s", __func__, MSG); \ } while (0) #define MINIWIN_TRACE(...) \ do { \ - SDL_LogTrace(LOG_CATEGORY_MINIWIN, __VA_ARGS__); \ + MORTAR_LogTrace(LOG_CATEGORY_MINIWIN, __VA_ARGS__); \ } while (0) diff --git a/miniwin/src/internal/structs.h b/miniwin/src/internal/structs.h index 43bda0ed..39ae5fba 100644 --- a/miniwin/src/internal/structs.h +++ b/miniwin/src/internal/structs.h @@ -1,6 +1,6 @@ #pragma once -#include +#include #include typedef float Matrix3x3[3][3]; @@ -10,7 +10,7 @@ struct FColor { }; struct Appearance { - SDL_Color color; + MORTAR_Color color; float shininess; uint32_t textureId; uint32_t flat; diff --git a/miniwin/src/windows/windows.cpp b/miniwin/src/windows/windows.cpp index 8c0791f3..c1d19178 100644 --- a/miniwin/src/windows/windows.cpp +++ b/miniwin/src/windows/windows.cpp @@ -1,8 +1,8 @@ #include "miniwin.h" #include "miniwin/ddraw.h" -#include #include +#include #include ULONG IUnknown::AddRef() @@ -39,18 +39,18 @@ BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, if (!hWnd) { return FALSE; } - SDL_Window* sdlWindow = reinterpret_cast(hWnd); + MORTAR_Window* mortarWindow = reinterpret_cast(hWnd); if (!(uFlags & SWP_NOACTIVATE)) { - SDL_RaiseWindow(sdlWindow); + MORTAR_RaiseWindow(mortarWindow); } if (!(uFlags & SWP_NOSIZE)) { - SDL_SetWindowSize(sdlWindow, cx, cy); + MORTAR_SetWindowSize(mortarWindow, cx, cy); } if (!(uFlags & SWP_NOMOVE)) { - SDL_SetWindowPosition(sdlWindow, X, Y); + MORTAR_SetWindowPosition(mortarWindow, X, Y); } return TRUE; @@ -119,13 +119,13 @@ int StretchDIBits( LONG GetWindowLong(HWND hWnd, int nIndex) { - SDL_Window* sdlWindow = reinterpret_cast(hWnd); + MORTAR_Window* mortarWindow = reinterpret_cast(hWnd); if (nIndex == GWL_STYLE) { - Uint32 flags = SDL_GetWindowFlags(sdlWindow); + uint32_t flags = MORTAR_GetWindowFlags(mortarWindow); LONG style = WS_POPUP; - if ((flags & SDL_WINDOW_BORDERLESS) == 0) { + if ((flags & MORTAR_WINDOW_BORDERLESS) == 0) { style = WS_OVERLAPPED | WS_CAPTION; - if (flags & SDL_WINDOW_RESIZABLE) { + if (flags & MORTAR_WINDOW_RESIZABLE) { style |= WS_THICKFRAME; } } @@ -141,10 +141,10 @@ LONG GetWindowLong(HWND hWnd, int nIndex) LONG SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong) { - SDL_Window* sdlWindow = reinterpret_cast(hWnd); + MORTAR_Window* mortarWindow = reinterpret_cast(hWnd); if (nIndex == GWL_STYLE) { - SDL_SetWindowBordered(sdlWindow, (dwNewLong & WS_CAPTION) != 0); - SDL_SetWindowResizable(sdlWindow, (dwNewLong & WS_THICKFRAME) != 0); + MORTAR_SetWindowBordered(mortarWindow, (dwNewLong & WS_CAPTION) != 0); + MORTAR_SetWindowResizable(mortarWindow, (dwNewLong & WS_THICKFRAME) != 0); return dwNewLong; } @@ -174,7 +174,7 @@ int SetRect(RECT* rc, int left, int top, int right, int bottom) VOID WINAPI Sleep(DWORD dwMilliseconds) { - SDL_Delay(dwMilliseconds); + MORTAR_Delay(dwMilliseconds); } BOOL ClientToScreen(HWND hWnd, LPPOINT lpPoint) diff --git a/mortar/include/mortar/KHR/khrplatform.h b/mortar/include/mortar/KHR/khrplatform.h new file mode 100644 index 00000000..a2feadb7 --- /dev/null +++ b/mortar/include/mortar/KHR/khrplatform.h @@ -0,0 +1,310 @@ +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2018 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE 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 OR COPYRIGHT HOLDERS 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 +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. + * + * The master copy of khrplatform.h is maintained in the Khronos EGL + * Registry repository at https://github.com/KhronosGroup/EGL-Registry + * The last semantic modification to khrplatform.h was at commit ID: + * 67a3e0864c2d75ea5287b9f3d2eb74a745936692 + * + * Adopters may modify this file to suit their platform. Adopters are + * encouraged to submit platform specific modifications to the Khronos + * group so that they can be included in future versions of this file. + * Please submit changes by filing pull requests or issues on + * the EGL Registry repository linked above. + * + * + * See the Implementer's Guidelines for information about where this file + * should be located on your system and for more details of its use: + * http://www.khronos.org/registry/implementers_guide.pdf + * + * This file should be included as + * #include + * by Khronos client API header files that use its types and defines. + * + * The types in khrplatform.h should only be used to define API-specific types. + * + * Types defined in khrplatform.h: + * khronos_int8_t signed 8 bit + * khronos_uint8_t unsigned 8 bit + * khronos_int16_t signed 16 bit + * khronos_uint16_t unsigned 16 bit + * khronos_int32_t signed 32 bit + * khronos_uint32_t unsigned 32 bit + * khronos_int64_t signed 64 bit + * khronos_uint64_t unsigned 64 bit + * khronos_intptr_t signed same number of bits as a pointer + * khronos_uintptr_t unsigned same number of bits as a pointer + * khronos_ssize_t signed size + * khronos_usize_t unsigned size + * khronos_float_t signed 32 bit floating point + * khronos_time_ns_t unsigned 64 bit time in nanoseconds + * khronos_utime_nanoseconds_t unsigned time interval or absolute time in + * nanoseconds + * khronos_stime_nanoseconds_t signed time interval in nanoseconds + * khronos_boolean_enum_t enumerated boolean type. This should + * only be used as a base type when a client API's boolean type is + * an enum. Client APIs which use an integer or other type for + * booleans cannot use this as the base type for their boolean. + * + * Tokens defined in khrplatform.h: + * + * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. + * + * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. + * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. + * + * Calling convention macros defined in this file: + * KHRONOS_APICALL + * KHRONOS_APIENTRY + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( + * int arg1, + * int arg2) KHRONOS_APIATTRIBUTES; + */ + +#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC) +#define KHRONOS_STATIC 1 +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APICALL + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +#if defined(KHRONOS_STATIC) +/* If the preprocessor constant KHRONOS_STATIC is defined, make the + * header compatible with static linking. */ +#define KHRONOS_APICALL +#elif defined(_WIN32) +#define KHRONOS_APICALL __declspec(dllimport) +#elif defined(__SYMBIAN32__) +#define KHRONOS_APICALL IMPORT_C +#elif defined(__ANDROID__) +#define KHRONOS_APICALL __attribute__((visibility("default"))) +#else +#define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIENTRY + *------------------------------------------------------------------------- + * This follows the return type of the function and precedes the function + * name in the function prototype. + */ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) +/* Win32 but not WinCE */ +#define KHRONOS_APIENTRY __stdcall +#else +#define KHRONOS_APIENTRY +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIATTRIBUTES + *------------------------------------------------------------------------- + * This follows the closing parenthesis of the function prototype arguments. + */ +#if defined(__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- + * basic type definitions + *-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || \ + defined(__USLC__) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 +/* + * To support platform where unsigned long cannot be used interchangeably with + * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t. + * Ideally, we could just use (u)intptr_t everywhere, but this could result in + * ABI breakage if khronos_uintptr_t is changed from unsigned long to + * unsigned long long or similar (this results in different C++ name mangling). + * To avoid changes for existing platforms, we restrict usage of intptr_t to + * platforms where the size of a pointer is larger than the size of long. + */ +#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__) +#if __SIZEOF_POINTER__ > __SIZEOF_LONG__ +#define KHRONOS_USE_INTPTR_T +#endif +#endif + +#elif defined(__VMS) || defined(__sgi) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* + * Win32 + */ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* + * Sun or Digital + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* + * Hypothetical platform with no float or int64 support + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* + * Generic fallback + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + +/* + * Types that are (so far) the same on all platforms + */ +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; + +/* + * Types that differ between LLP64 and LP64 architectures - in LLP64, + * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears + * to be the only LLP64 architecture in current use. + */ +#ifdef KHRONOS_USE_INTPTR_T +typedef intptr_t khronos_intptr_t; +typedef uintptr_t khronos_uintptr_t; +#elif defined(_WIN64) +typedef signed long long int khronos_intptr_t; +typedef unsigned long long int khronos_uintptr_t; +#else +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +#endif + +#if defined(_WIN64) +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; +#endif + +#if KHRONOS_SUPPORT_FLOAT +/* + * Float type + */ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types + * + * These types can be used to represent a time interval in nanoseconds or + * an absolute Unadjusted System Time. Unadjusted System Time is the number + * of nanoseconds since some arbitrary system event (e.g. since the last + * time the system booted). The Unadjusted System Time is an unsigned + * 64 bit value that wraps back to 0 every 584 years. Time intervals + * may be either signed or unsigned. + */ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* + * Dummy value used to pad enum types to 32 bits. + */ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* + * Enumerated boolean type + * + * Values other than zero should be considered to be true. Therefore + * comparisons should not be made against KHRONOS_TRUE. + */ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ diff --git a/mortar/include/mortar/backends/sdl3_dynamic.h b/mortar/include/mortar/backends/sdl3_dynamic.h new file mode 100644 index 00000000..4a6527fc --- /dev/null +++ b/mortar/include/mortar/backends/sdl3_dynamic.h @@ -0,0 +1,5466 @@ +#pragma once + +// This file is auto-generated by gendynsdl3api.py. Do not edit. + +#ifdef SDL_h_ +#error This file must be included BEFORE SDL3/SDL.h +#endif + +#include +#include +#ifndef MORTAR_IMPLEMENT_SDL_MAIN +#define SDL_MAIN_HANDLED +#endif +#include +#include + +#ifdef SDL3_DYNAMIC_LOAD + +#define FOREACH_SDL3_SYMBOL(X) \ + X(SDL_AssertState, SDL_ReportAssertion, (SDL_AssertData * data, const char* func, const char* file, int line)) \ + X(bool, SDL_ResumeAudioDevice, (SDL_AudioDeviceID devid)) \ + X(SDL_AudioDeviceID, SDL_GetAudioStreamDevice, (SDL_AudioStream * stream)) \ + X(bool, SDL_PutAudioStreamData, (SDL_AudioStream * stream, const void* buf, int len)) \ + X(void, SDL_DestroyAudioStream, (SDL_AudioStream * stream)) \ + X(SDL_AudioStream*, \ + SDL_OpenAudioDeviceStream, \ + (SDL_AudioDeviceID devid, const SDL_AudioSpec* spec, SDL_AudioStreamCallback callback, void* userdata)) \ + X(bool, SDL_HasMMX, ()) \ + X(bool, SDL_HasSSE2, ()) \ + X(bool, SDL_HasNEON, ()) \ + X(int, SDL_GetSystemRAM, ()) \ + X(bool, SDL_SetError, (SDL_PRINTF_FORMAT_STRING const char* fmt, ...)) \ + X(const char*, SDL_GetError, ()) \ + X(bool, SDL_PushEvent, (SDL_Event * event)) \ + X(bool, SDL_AddEventWatch, (SDL_EventFilter filter, void* userdata)) \ + X(Uint32, SDL_RegisterEvents, (int numevents)) \ + X(const char*, SDL_GetBasePath, ()) \ + X(char*, SDL_GetPrefPath, (const char* org, const char* app)) \ + X(const char*, SDL_GetUserFolder, (SDL_Folder folder)) \ + X(bool, SDL_CreateDirectory, (const char* path)) \ + X(bool, SDL_RemovePath, (const char* path)) \ + X(bool, SDL_RenamePath, (const char* oldpath, const char* newpath)) \ + X(bool, SDL_GetPathInfo, (const char* path, SDL_PathInfo* info)) \ + X(char**, SDL_GlobDirectory, (const char* path, const char* pattern, SDL_GlobFlags flags, int* count)) \ + X(SDL_Gamepad*, SDL_OpenGamepad, (SDL_JoystickID instance_id)) \ + X(SDL_Joystick*, SDL_GetGamepadJoystick, (SDL_Gamepad * gamepad)) \ + X(Sint16, SDL_GetGamepadAxis, (SDL_Gamepad * gamepad, SDL_GamepadAxis axis)) \ + X(bool, \ + SDL_RumbleGamepad, \ + (SDL_Gamepad * gamepad, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms)) \ + X(void, SDL_CloseGamepad, (SDL_Gamepad * gamepad)) \ + X(SDL_GPUDevice*, SDL_CreateGPUDevice, (SDL_GPUShaderFormat format_flags, bool debug_mode, const char* name)) \ + X(void, SDL_DestroyGPUDevice, (SDL_GPUDevice * device)) \ + X(SDL_GPUShaderFormat, SDL_GetGPUShaderFormats, (SDL_GPUDevice * device)) \ + X(SDL_GPUGraphicsPipeline*, \ + SDL_CreateGPUGraphicsPipeline, \ + (SDL_GPUDevice * device, const SDL_GPUGraphicsPipelineCreateInfo* createinfo)) \ + X(SDL_GPUSampler*, SDL_CreateGPUSampler, (SDL_GPUDevice * device, const SDL_GPUSamplerCreateInfo* createinfo)) \ + X(SDL_GPUShader*, SDL_CreateGPUShader, (SDL_GPUDevice * device, const SDL_GPUShaderCreateInfo* createinfo)) \ + X(SDL_GPUTexture*, SDL_CreateGPUTexture, (SDL_GPUDevice * device, const SDL_GPUTextureCreateInfo* createinfo)) \ + X(SDL_GPUBuffer*, SDL_CreateGPUBuffer, (SDL_GPUDevice * device, const SDL_GPUBufferCreateInfo* createinfo)) \ + X(SDL_GPUTransferBuffer*, \ + SDL_CreateGPUTransferBuffer, \ + (SDL_GPUDevice * device, const SDL_GPUTransferBufferCreateInfo* createinfo)) \ + X(void, SDL_ReleaseGPUTexture, (SDL_GPUDevice * device, SDL_GPUTexture * texture)) \ + X(void, SDL_ReleaseGPUSampler, (SDL_GPUDevice * device, SDL_GPUSampler * sampler)) \ + X(void, SDL_ReleaseGPUBuffer, (SDL_GPUDevice * device, SDL_GPUBuffer * buffer)) \ + X(void, SDL_ReleaseGPUTransferBuffer, (SDL_GPUDevice * device, SDL_GPUTransferBuffer * transfer_buffer)) \ + X(void, SDL_ReleaseGPUShader, (SDL_GPUDevice * device, SDL_GPUShader * shader)) \ + X(void, SDL_ReleaseGPUGraphicsPipeline, (SDL_GPUDevice * device, SDL_GPUGraphicsPipeline * graphics_pipeline)) \ + X(SDL_GPUCommandBuffer*, SDL_AcquireGPUCommandBuffer, (SDL_GPUDevice * device)) \ + X(void, \ + SDL_PushGPUVertexUniformData, \ + (SDL_GPUCommandBuffer * command_buffer, Uint32 slot_index, const void* data, Uint32 length)) \ + X(void, \ + SDL_PushGPUFragmentUniformData, \ + (SDL_GPUCommandBuffer * command_buffer, Uint32 slot_index, const void* data, Uint32 length)) \ + X(SDL_GPURenderPass*, \ + SDL_BeginGPURenderPass, \ + (SDL_GPUCommandBuffer * command_buffer, \ + const SDL_GPUColorTargetInfo* color_target_infos, \ + Uint32 num_color_targets, \ + const SDL_GPUDepthStencilTargetInfo* depth_stencil_target_info)) \ + X(void, \ + SDL_BindGPUGraphicsPipeline, \ + (SDL_GPURenderPass * render_pass, SDL_GPUGraphicsPipeline * graphics_pipeline)) \ + X(void, SDL_SetGPUScissor, (SDL_GPURenderPass * render_pass, const SDL_Rect* scissor)) \ + X(void, \ + SDL_BindGPUVertexBuffers, \ + (SDL_GPURenderPass * render_pass, Uint32 first_slot, const SDL_GPUBufferBinding* bindings, Uint32 num_bindings)) \ + X(void, \ + SDL_BindGPUIndexBuffer, \ + (SDL_GPURenderPass * render_pass, \ + const SDL_GPUBufferBinding* binding, \ + SDL_GPUIndexElementSize index_element_size)) \ + X(void, \ + SDL_BindGPUFragmentSamplers, \ + (SDL_GPURenderPass * render_pass, \ + Uint32 first_slot, \ + const SDL_GPUTextureSamplerBinding* texture_sampler_bindings, \ + Uint32 num_bindings)) \ + X(void, \ + SDL_DrawGPUIndexedPrimitives, \ + (SDL_GPURenderPass * render_pass, \ + Uint32 num_indices, \ + Uint32 num_instances, \ + Uint32 first_index, \ + Sint32 vertex_offset, \ + Uint32 first_instance)) \ + X(void, SDL_EndGPURenderPass, (SDL_GPURenderPass * render_pass)) \ + X(void*, SDL_MapGPUTransferBuffer, (SDL_GPUDevice * device, SDL_GPUTransferBuffer * transfer_buffer, bool cycle)) \ + X(void, SDL_UnmapGPUTransferBuffer, (SDL_GPUDevice * device, SDL_GPUTransferBuffer * transfer_buffer)) \ + X(SDL_GPUCopyPass*, SDL_BeginGPUCopyPass, (SDL_GPUCommandBuffer * command_buffer)) \ + X(void, \ + SDL_UploadToGPUTexture, \ + (SDL_GPUCopyPass * copy_pass, \ + const SDL_GPUTextureTransferInfo* source, \ + const SDL_GPUTextureRegion* destination, \ + bool cycle)) \ + X(void, \ + SDL_UploadToGPUBuffer, \ + (SDL_GPUCopyPass * copy_pass, \ + const SDL_GPUTransferBufferLocation* source, \ + const SDL_GPUBufferRegion* destination, \ + bool cycle)) \ + X(void, \ + SDL_DownloadFromGPUTexture, \ + (SDL_GPUCopyPass * copy_pass, const SDL_GPUTextureRegion* source, const SDL_GPUTextureTransferInfo* destination) \ + ) \ + X(void, SDL_EndGPUCopyPass, (SDL_GPUCopyPass * copy_pass)) \ + X(void, SDL_BlitGPUTexture, (SDL_GPUCommandBuffer * command_buffer, const SDL_GPUBlitInfo* info)) \ + X(bool, SDL_ClaimWindowForGPUDevice, (SDL_GPUDevice * device, SDL_Window * window)) \ + X(void, SDL_ReleaseWindowFromGPUDevice, (SDL_GPUDevice * device, SDL_Window * window)) \ + X(SDL_GPUTextureFormat, SDL_GetGPUSwapchainTextureFormat, (SDL_GPUDevice * device, SDL_Window * window)) \ + X(bool, \ + SDL_WaitAndAcquireGPUSwapchainTexture, \ + (SDL_GPUCommandBuffer * command_buffer, \ + SDL_Window * window, \ + SDL_GPUTexture * *swapchain_texture, \ + Uint32 * swapchain_texture_width, \ + Uint32 * swapchain_texture_height)) \ + X(bool, SDL_SubmitGPUCommandBuffer, (SDL_GPUCommandBuffer * command_buffer)) \ + X(SDL_GPUFence*, SDL_SubmitGPUCommandBufferAndAcquireFence, (SDL_GPUCommandBuffer * command_buffer)) \ + X(bool, SDL_CancelGPUCommandBuffer, (SDL_GPUCommandBuffer * command_buffer)) \ + X(bool, \ + SDL_WaitForGPUFences, \ + (SDL_GPUDevice * device, bool wait_all, SDL_GPUFence* const* fences, Uint32 num_fences)) \ + X(void, SDL_ReleaseGPUFence, (SDL_GPUDevice * device, SDL_GPUFence * fence)) \ + X(SDL_HapticID*, SDL_GetHaptics, (int* count)) \ + X(SDL_Haptic*, SDL_OpenHaptic, (SDL_HapticID instance_id)) \ + X(SDL_HapticID, SDL_GetHapticID, (SDL_Haptic * haptic)) \ + X(SDL_Haptic*, SDL_OpenHapticFromMouse, ()) \ + X(SDL_Haptic*, SDL_OpenHapticFromJoystick, (SDL_Joystick * joystick)) \ + X(void, SDL_CloseHaptic, (SDL_Haptic * haptic)) \ + X(bool, SDL_InitHapticRumble, (SDL_Haptic * haptic)) \ + X(bool, SDL_PlayHapticRumble, (SDL_Haptic * haptic, float strength, Uint32 length)) \ + X(bool, SDL_SetHint, (const char* name, const char* value)) \ + X(bool, SDL_Init, (SDL_InitFlags flags)) \ + X(void, SDL_Quit, ()) \ + X(SDL_IOStream*, SDL_IOFromFile, (const char* file, const char* mode)) \ + X(SDL_IOStream*, SDL_IOFromMem, (void* mem, size_t size)) \ + X(bool, SDL_CloseIO, (SDL_IOStream * context)) \ + X(SDL_IOStatus, SDL_GetIOStatus, (SDL_IOStream * context)) \ + X(Sint64, SDL_GetIOSize, (SDL_IOStream * context)) \ + X(Sint64, SDL_SeekIO, (SDL_IOStream * context, Sint64 offset, SDL_IOWhence whence)) \ + X(Sint64, SDL_TellIO, (SDL_IOStream * context)) \ + X(size_t, SDL_ReadIO, (SDL_IOStream * context, void* ptr, size_t size)) \ + X(size_t, SDL_WriteIO, (SDL_IOStream * context, const void* ptr, size_t size)) \ + X(void*, SDL_LoadFile, (const char* file, size_t* datasize)) \ + X(const char*, SDL_GetJoystickNameForID, (SDL_JoystickID instance_id)) \ + X(const bool*, SDL_GetKeyboardState, (int* numkeys)) \ + X(void, SDL_LogError, (int category, SDL_PRINTF_FORMAT_STRING const char* fmt, ...)) \ + X(void, \ + SDL_LogMessageV, \ + (int category, SDL_LogPriority priority, SDL_PRINTF_FORMAT_STRING const char* fmt, va_list ap)) \ + X(int, SDL_RunApp, (int argc, char* argv[], SDL_main_func mainFunction, void* reserved)) \ + X(int, \ + SDL_EnterAppMainCallbacks, \ + (int argc, \ + char* argv[], \ + SDL_AppInit_func appinit, \ + SDL_AppIterate_func appiter, \ + SDL_AppEvent_func appevent, \ + SDL_AppQuit_func appquit)) \ + X(bool, \ + SDL_ShowSimpleMessageBox, \ + (SDL_MessageBoxFlags flags, const char* title, const char* message, SDL_Window* window)) \ + X(SDL_MouseButtonFlags, SDL_GetMouseState, (float* x, float* y)) \ + X(void, SDL_WarpMouseInWindow, (SDL_Window * window, float x, float y)) \ + X(SDL_Cursor*, SDL_CreateSystemCursor, (SDL_SystemCursor id)) \ + X(bool, SDL_SetCursor, (SDL_Cursor * cursor)) \ + X(bool, SDL_ShowCursor, ()) \ + X(bool, SDL_HideCursor, ()) \ + X(SDL_Mutex*, SDL_CreateMutex, ()) \ + X(void, SDL_LockMutex, (SDL_Mutex * mutex)) \ + X(void, SDL_UnlockMutex, (SDL_Mutex * mutex)) \ + X(void, SDL_DestroyMutex, (SDL_Mutex * mutex)) \ + X(SDL_Semaphore*, SDL_CreateSemaphore, (Uint32 initial_value)) \ + X(void, SDL_DestroySemaphore, (SDL_Semaphore * sem)) \ + X(void, SDL_WaitSemaphore, (SDL_Semaphore * sem)) \ + X(void, SDL_SignalSemaphore, (SDL_Semaphore * sem)) \ + X(const char*, SDL_GetPixelFormatName, (SDL_PixelFormat format)) \ + X(SDL_PixelFormat, SDL_GetPixelFormatForMasks, (int bpp, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask)) \ + X(const SDL_PixelFormatDetails*, SDL_GetPixelFormatDetails, (SDL_PixelFormat format)) \ + X(SDL_Palette*, SDL_CreatePalette, (int ncolors)) \ + X(bool, SDL_SetPaletteColors, (SDL_Palette * palette, const SDL_Color* colors, int firstcolor, int ncolors)) \ + X(void, SDL_DestroyPalette, (SDL_Palette * palette)) \ + X(Uint32, \ + SDL_MapRGB, \ + (const SDL_PixelFormatDetails* format, const SDL_Palette* palette, Uint8 r, Uint8 g, Uint8 b)) \ + X(Uint32, \ + SDL_MapRGBA, \ + (const SDL_PixelFormatDetails* format, const SDL_Palette* palette, Uint8 r, Uint8 g, Uint8 b, Uint8 a)) \ + X(void, \ + SDL_GetRGBA, \ + (Uint32 pixelvalue, \ + const SDL_PixelFormatDetails* format, \ + const SDL_Palette* palette, \ + Uint8* r, \ + Uint8* g, \ + Uint8* b, \ + Uint8* a)) \ + X(SDL_Process*, SDL_CreateProcess, (const char* const* args, bool pipe_stdio)) \ + X(SDL_PropertiesID, SDL_CreateProperties, ()) \ + X(bool, SDL_SetPointerProperty, (SDL_PropertiesID props, const char* name, void* value)) \ + X(bool, SDL_SetStringProperty, (SDL_PropertiesID props, const char* name, const char* value)) \ + X(bool, SDL_SetNumberProperty, (SDL_PropertiesID props, const char* name, Sint64 value)) \ + X(bool, SDL_SetBooleanProperty, (SDL_PropertiesID props, const char* name, bool value)) \ + X(void*, SDL_GetPointerProperty, (SDL_PropertiesID props, const char* name, void* default_value)) \ + X(void, SDL_DestroyProperties, (SDL_PropertiesID props)) \ + X(SDL_Renderer*, SDL_CreateRenderer, (SDL_Window * window, const char* name)) \ + X(SDL_Texture*, \ + SDL_CreateTexture, \ + (SDL_Renderer * renderer, SDL_PixelFormat format, SDL_TextureAccess access, int w, int h)) \ + X(bool, SDL_UpdateTexture, (SDL_Texture * texture, const SDL_Rect* rect, const void* pixels, int pitch)) \ + X(bool, \ + SDL_RenderTexture, \ + (SDL_Renderer * renderer, SDL_Texture * texture, const SDL_FRect* srcrect, const SDL_FRect* dstrect)) \ + X(bool, SDL_RenderPresent, (SDL_Renderer * renderer)) \ + X(void, SDL_DestroyTexture, (SDL_Texture * texture)) \ + X(void, SDL_DestroyRenderer, (SDL_Renderer * renderer)) \ + X(void*, SDL_malloc, (size_t size)) \ + X(void*, SDL_calloc, (size_t nmemb, size_t size)) \ + X(void, SDL_free, (void* mem)) \ + X(int, SDL_isdigit, (int x)) \ + X(int, SDL_tolower, (int x)) \ + X(void*, SDL_memcpy, (void* dst, const void* src, size_t len)) \ + X(void*, SDL_memset, (void* dst, int c, size_t len)) \ + X(int, SDL_memcmp, (const void* s1, const void* s2, size_t len)) \ + X(size_t, SDL_strlen, (const char* str)) \ + X(size_t, SDL_strlcpy, (char* dst, const char* src, size_t maxlen)) \ + X(char*, SDL_strdup, (const char* str)) \ + X(char*, SDL_strupr, (char* str)) \ + X(char*, SDL_strlwr, (char* str)) \ + X(char*, SDL_strchr, (const char* str, int c)) \ + X(char*, SDL_strstr, (const char* haystack, const char* needle)) \ + X(char*, SDL_strtok_r, (char* str, const char* delim, char** saveptr)) \ + X(char*, SDL_itoa, (int value, char* str, int radix)) \ + X(int, SDL_strncmp, (const char* str1, const char* str2, size_t maxlen)) \ + X(int, SDL_strcasecmp, (const char* str1, const char* str2)) \ + X(int, SDL_strncasecmp, (const char* str1, const char* str2, size_t maxlen)) \ + X(int, SDL_vsscanf, (const char* text, SDL_SCANF_FORMAT_STRING const char* fmt, va_list ap)) \ + X(int, SDL_snprintf, (char* text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char* fmt, ...)) \ + X(int, SDL_vsnprintf, (char* text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char* fmt, va_list ap)) \ + X(Sint32, SDL_rand, (Sint32 n)) \ + X(float, SDL_randf, ()) \ + X(SDL_Surface*, SDL_CreateSurface, (int width, int height, SDL_PixelFormat format)) \ + X(SDL_Surface*, SDL_CreateSurfaceFrom, (int width, int height, SDL_PixelFormat format, void* pixels, int pitch)) \ + X(void, SDL_DestroySurface, (SDL_Surface * surface)) \ + X(bool, SDL_SetSurfacePalette, (SDL_Surface * surface, SDL_Palette * palette)) \ + X(bool, SDL_LockSurface, (SDL_Surface * surface)) \ + X(void, SDL_UnlockSurface, (SDL_Surface * surface)) \ + X(SDL_Surface*, SDL_LoadBMP_IO, (SDL_IOStream * src, bool closeio)) \ + X(SDL_Surface*, SDL_LoadBMP, (const char* file)) \ + X(bool, SDL_SetSurfaceColorKey, (SDL_Surface * surface, bool enabled, Uint32 key)) \ + X(SDL_Surface*, SDL_ConvertSurface, (SDL_Surface * surface, SDL_PixelFormat format)) \ + X(bool, SDL_FillSurfaceRect, (SDL_Surface * dst, const SDL_Rect* rect, Uint32 color)) \ + X(bool, SDL_BlitSurface, (SDL_Surface * src, const SDL_Rect* srcrect, SDL_Surface* dst, const SDL_Rect* dstrect)) \ + X(bool, \ + SDL_BlitSurfaceScaled, \ + (SDL_Surface * src, const SDL_Rect* srcrect, SDL_Surface* dst, const SDL_Rect* dstrect, SDL_ScaleMode scaleMode) \ + ) \ + X(SDL_Thread*, \ + SDL_CreateThreadWithPropertiesRuntime, \ + (SDL_PropertiesID props, SDL_FunctionPointer pfnBeginThread, SDL_FunctionPointer pfnEndThread)) \ + X(void, SDL_WaitThread, (SDL_Thread * thread, int* status)) \ + X(Uint64, SDL_GetTicks, ()) \ + X(Uint64, SDL_GetTicksNS, ()) \ + X(Uint64, SDL_GetPerformanceCounter, ()) \ + X(Uint64, SDL_GetPerformanceFrequency, ()) \ + X(void, SDL_Delay, (Uint32 ms)) \ + X(SDL_TimerID, SDL_AddTimer, (Uint32 interval, SDL_TimerCallback callback, void* userdata)) \ + X(bool, SDL_RemoveTimer, (SDL_TimerID id)) \ + X(int, SDL_GetVersion, ()) \ + X(const char*, SDL_GetRevision, ()) \ + X(const char*, SDL_GetCurrentVideoDriver, ()) \ + X(SDL_DisplayID, SDL_GetPrimaryDisplay, ()) \ + X(SDL_DisplayMode**, SDL_GetFullscreenDisplayModes, (SDL_DisplayID displayID, int* count)) \ + X(bool, \ + SDL_GetClosestFullscreenDisplayMode, \ + (SDL_DisplayID displayID, \ + int w, \ + int h, \ + float refresh_rate, \ + bool include_high_density_modes, \ + SDL_DisplayMode* closest)) \ + X(const SDL_DisplayMode*, SDL_GetCurrentDisplayMode, (SDL_DisplayID displayID)) \ + X(SDL_DisplayID, SDL_GetDisplayForWindow, (SDL_Window * window)) \ + X(bool, SDL_SetWindowFullscreenMode, (SDL_Window * window, const SDL_DisplayMode* mode)) \ + X(SDL_Window*, SDL_CreateWindowWithProperties, (SDL_PropertiesID props)) \ + X(SDL_PropertiesID, SDL_GetWindowProperties, (SDL_Window * window)) \ + X(SDL_WindowFlags, SDL_GetWindowFlags, (SDL_Window * window)) \ + X(bool, SDL_SetWindowTitle, (SDL_Window * window, const char* title)) \ + X(bool, SDL_SetWindowIcon, (SDL_Window * window, SDL_Surface * icon)) \ + X(bool, SDL_SetWindowPosition, (SDL_Window * window, int x, int y)) \ + X(bool, SDL_SetWindowSize, (SDL_Window * window, int w, int h)) \ + X(bool, SDL_GetWindowSize, (SDL_Window * window, int* w, int* h)) \ + X(bool, SDL_GetWindowSizeInPixels, (SDL_Window * window, int* w, int* h)) \ + X(bool, SDL_SetWindowBordered, (SDL_Window * window, bool bordered)) \ + X(bool, SDL_SetWindowResizable, (SDL_Window * window, bool resizable)) \ + X(bool, SDL_RaiseWindow, (SDL_Window * window)) \ + X(bool, SDL_SetWindowFullscreen, (SDL_Window * window, bool fullscreen)) \ + X(void, SDL_DestroyWindow, (SDL_Window * window)) \ + X(SDL_FunctionPointer, SDL_GL_GetProcAddress, (const char* proc)) \ + X(bool, SDL_GL_ExtensionSupported, (const char* extension)) \ + X(void, SDL_GL_ResetAttributes, ()) \ + X(bool, SDL_GL_SetAttribute, (SDL_GLAttr attr, int value)) \ + X(SDL_GLContext, SDL_GL_CreateContext, (SDL_Window * window)) \ + X(bool, SDL_GL_MakeCurrent, (SDL_Window * window, SDL_GLContext context)) \ + X(bool, SDL_GL_SwapWindow, (SDL_Window * window)) \ + X(bool, SDL_GL_DestroyContext, (SDL_GLContext context)) + +#define X_SDL3_SYMBOL_TYPEDEF(RETTYPE, NAME, TYPES) typedef RETTYPE SDLCALL NAME##_cbfn TYPES; +#define X_SDL3_STRUCT_MEMBER(RETTYPE, NAME, TYPES) NAME##_cbfn* NAME##_symbol; + +FOREACH_SDL3_SYMBOL(X_SDL3_SYMBOL_TYPEDEF) +typedef struct SDL3_Symbols { + int refcount; + void* handle; + FOREACH_SDL3_SYMBOL(X_SDL3_STRUCT_MEMBER) +} SDL3_Symbols; + +#undef X_SDL3_SYMBOL_TYPEDEF +#undef X_SDL3_STRUCT_MEMBER + +extern SDL3_Symbols SDL3; + +#ifdef IMPLEMENT_DYN_SDL3 + +#ifdef _WIN32 +static const char* const sdl3_locations[] = { + "SDL3.dll", +}; +#elif defined(__APPLE__) +#define SDL3_LIBNAME "libSDL3.dylib" +#define SDL3_FRAMEWORK "SDL3.framework/Versions/A/SDL3" +static const char* const sdl3_locations[] = { + "@loader_path/" SDL3_LIBNAME, /* MyApp.app/Contents/MacOS/libSDL3_dylib */ + "@loader_path/../Frameworks/" SDL3_FRAMEWORK, /* MyApp.app/Contents/Frameworks/SDL3_framework */ + "@executable_path/" SDL3_LIBNAME, /* MyApp.app/Contents/MacOS/libSDL3_dylib */ + "@executable_path/../Frameworks/" SDL3_FRAMEWORK, /* MyApp.app/Contents/Frameworks/SDL3_framework */ + NULL, /* /Users/username/Library/Frameworks/SDL3_framework */ + "/Library/Frameworks" SDL3_FRAMEWORK, /* /Library/Frameworks/SDL3_framework */ + SDL3_LIBNAME /* oh well, anywhere the system can see the .dylib (/usr/local/lib or whatever) */ +}; +#undef SDL3_LIBNAME +#undef SDL3_FRAMEWORK +#else +static const char* const sdl3_locations[] = { + "libSDL3.so.0", + "libSDL3.so", +}; +#endif + +#ifdef _WIN32 +#include +static void* open_object(const char* name) +{ + return (void*) LoadLibraryA(name); +} +static void close_object(void* obj) +{ + FreeLibrary((HMODULE) obj); +} +static void* load_symbol(void* obj, const char* name) +{ + return (void*) GetProcAddress((HMODULE) obj, name); +} +static const char* load_error(void) +{ + static char buffer[512]; + DWORD cchMsg = FormatMessageA( + FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + GetLastError(), + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + buffer, + sizeof(buffer) - 1, + NULL + ); + if (cchMsg == 0) { + strncpy(buffer, "GetProcAddress failed", sizeof(buffer)); + buffer[sizeof(buffer) - 1] = '\0'; + } + return buffer; +} +#else +#include +static void* open_object(const char* name) +{ + return dlopen(name, RTLD_NOW | RTLD_LOCAL); +} +static void close_object(void* obj) +{ + dlclose(obj); +} +static void* load_symbol(void* obj, const char* name) +{ + return dlsym(obj, name); +} +static const char* load_error(void) +{ + return dlerror(); +} +#endif + +#define X_SDL3_LOAD_SYMBOL(RETTYPE, NAME, TYPES) \ + SDL3.NAME##_symbol = (NAME##_cbfn*) load_symbol(SDL3.handle, #NAME); \ + if (!SDL3.NAME##_symbol) { \ + missing_symbol = #NAME; \ + goto error; \ + } +static bool load_sdl3_api() +{ + if (SDL3.refcount) { + SDL3.refcount += 1; + return true; + } + SDL_zero(SDL3); + for (size_t i = 0; i < SDL_arraysize(sdl3_locations); i++) { + SDL3.handle = open_object(sdl3_locations[i]); + if (SDL3.handle != NULL) { + break; + } + } + if (!SDL3.handle) { + fputs("Could not find SDL3 library\n", stderr); + return false; + } + const char* missing_symbol = NULL; + FOREACH_SDL3_SYMBOL(X_SDL3_LOAD_SYMBOL) + SDL3.refcount = 1; + return true; +error: + fprintf(stderr, "Could not find SDL3 symbol: %s\n", missing_symbol); + close_object(SDL3.handle); + SDL_zero(SDL3); + return false; +} + +static void unload_sdl3_api() +{ + SDL3.refcount -= 1; + if (!SDL3.refcount) { + close_object(SDL3.handle); + SDL_zero(SDL3.handle); + } +} +#endif // IMPLEMENT_DYN_SDL3 + +#ifdef SDL_ReportAssertion +#undef SDL_ReportAssertion +#endif // SDL_ReportAssertion +#define SDL_ReportAssertion SDL3.SDL_ReportAssertion_symbol +#ifdef SDL_SetAssertionHandler +#undef SDL_SetAssertionHandler +#endif // SDL_SetAssertionHandler +#define SDL_SetAssertionHandler SDL3_symbol_SDL_SetAssertionHandler_is_marked_unused +#ifdef SDL_GetDefaultAssertionHandler +#undef SDL_GetDefaultAssertionHandler +#endif // SDL_GetDefaultAssertionHandler +#define SDL_GetDefaultAssertionHandler SDL3_symbol_SDL_GetDefaultAssertionHandler_is_marked_unused +#ifdef SDL_GetAssertionHandler +#undef SDL_GetAssertionHandler +#endif // SDL_GetAssertionHandler +#define SDL_GetAssertionHandler SDL3_symbol_SDL_GetAssertionHandler_is_marked_unused +#ifdef SDL_GetAssertionReport +#undef SDL_GetAssertionReport +#endif // SDL_GetAssertionReport +#define SDL_GetAssertionReport SDL3_symbol_SDL_GetAssertionReport_is_marked_unused +#ifdef SDL_ResetAssertionReport +#undef SDL_ResetAssertionReport +#endif // SDL_ResetAssertionReport +#define SDL_ResetAssertionReport SDL3_symbol_SDL_ResetAssertionReport_is_marked_unused +#ifdef SDL_AsyncIOFromFile +#undef SDL_AsyncIOFromFile +#endif // SDL_AsyncIOFromFile +#define SDL_AsyncIOFromFile SDL3_symbol_SDL_AsyncIOFromFile_is_marked_unused +#ifdef SDL_GetAsyncIOSize +#undef SDL_GetAsyncIOSize +#endif // SDL_GetAsyncIOSize +#define SDL_GetAsyncIOSize SDL3_symbol_SDL_GetAsyncIOSize_is_marked_unused +#ifdef SDL_ReadAsyncIO +#undef SDL_ReadAsyncIO +#endif // SDL_ReadAsyncIO +#define SDL_ReadAsyncIO SDL3_symbol_SDL_ReadAsyncIO_is_marked_unused +#ifdef SDL_WriteAsyncIO +#undef SDL_WriteAsyncIO +#endif // SDL_WriteAsyncIO +#define SDL_WriteAsyncIO SDL3_symbol_SDL_WriteAsyncIO_is_marked_unused +#ifdef SDL_CloseAsyncIO +#undef SDL_CloseAsyncIO +#endif // SDL_CloseAsyncIO +#define SDL_CloseAsyncIO SDL3_symbol_SDL_CloseAsyncIO_is_marked_unused +#ifdef SDL_CreateAsyncIOQueue +#undef SDL_CreateAsyncIOQueue +#endif // SDL_CreateAsyncIOQueue +#define SDL_CreateAsyncIOQueue SDL3_symbol_SDL_CreateAsyncIOQueue_is_marked_unused +#ifdef SDL_DestroyAsyncIOQueue +#undef SDL_DestroyAsyncIOQueue +#endif // SDL_DestroyAsyncIOQueue +#define SDL_DestroyAsyncIOQueue SDL3_symbol_SDL_DestroyAsyncIOQueue_is_marked_unused +#ifdef SDL_GetAsyncIOResult +#undef SDL_GetAsyncIOResult +#endif // SDL_GetAsyncIOResult +#define SDL_GetAsyncIOResult SDL3_symbol_SDL_GetAsyncIOResult_is_marked_unused +#ifdef SDL_WaitAsyncIOResult +#undef SDL_WaitAsyncIOResult +#endif // SDL_WaitAsyncIOResult +#define SDL_WaitAsyncIOResult SDL3_symbol_SDL_WaitAsyncIOResult_is_marked_unused +#ifdef SDL_SignalAsyncIOQueue +#undef SDL_SignalAsyncIOQueue +#endif // SDL_SignalAsyncIOQueue +#define SDL_SignalAsyncIOQueue SDL3_symbol_SDL_SignalAsyncIOQueue_is_marked_unused +#ifdef SDL_LoadFileAsync +#undef SDL_LoadFileAsync +#endif // SDL_LoadFileAsync +#define SDL_LoadFileAsync SDL3_symbol_SDL_LoadFileAsync_is_marked_unused +#ifdef SDL_TryLockSpinlock +#undef SDL_TryLockSpinlock +#endif // SDL_TryLockSpinlock +#define SDL_TryLockSpinlock SDL3_symbol_SDL_TryLockSpinlock_is_marked_unused +#ifdef SDL_LockSpinlock +#undef SDL_LockSpinlock +#endif // SDL_LockSpinlock +#define SDL_LockSpinlock SDL3_symbol_SDL_LockSpinlock_is_marked_unused +#ifdef SDL_UnlockSpinlock +#undef SDL_UnlockSpinlock +#endif // SDL_UnlockSpinlock +#define SDL_UnlockSpinlock SDL3_symbol_SDL_UnlockSpinlock_is_marked_unused +#ifdef SDL_MemoryBarrierReleaseFunction +#undef SDL_MemoryBarrierReleaseFunction +#endif // SDL_MemoryBarrierReleaseFunction +#define SDL_MemoryBarrierReleaseFunction SDL3_symbol_SDL_MemoryBarrierReleaseFunction_is_marked_unused +#ifdef SDL_MemoryBarrierAcquireFunction +#undef SDL_MemoryBarrierAcquireFunction +#endif // SDL_MemoryBarrierAcquireFunction +#define SDL_MemoryBarrierAcquireFunction SDL3_symbol_SDL_MemoryBarrierAcquireFunction_is_marked_unused +#ifdef SDL_CompareAndSwapAtomicInt +#undef SDL_CompareAndSwapAtomicInt +#endif // SDL_CompareAndSwapAtomicInt +#define SDL_CompareAndSwapAtomicInt SDL3_symbol_SDL_CompareAndSwapAtomicInt_is_marked_unused +#ifdef SDL_SetAtomicInt +#undef SDL_SetAtomicInt +#endif // SDL_SetAtomicInt +#define SDL_SetAtomicInt SDL3_symbol_SDL_SetAtomicInt_is_marked_unused +#ifdef SDL_GetAtomicInt +#undef SDL_GetAtomicInt +#endif // SDL_GetAtomicInt +#define SDL_GetAtomicInt SDL3_symbol_SDL_GetAtomicInt_is_marked_unused +#ifdef SDL_AddAtomicInt +#undef SDL_AddAtomicInt +#endif // SDL_AddAtomicInt +#define SDL_AddAtomicInt SDL3_symbol_SDL_AddAtomicInt_is_marked_unused +#ifdef SDL_CompareAndSwapAtomicU32 +#undef SDL_CompareAndSwapAtomicU32 +#endif // SDL_CompareAndSwapAtomicU32 +#define SDL_CompareAndSwapAtomicU32 SDL3_symbol_SDL_CompareAndSwapAtomicU32_is_marked_unused +#ifdef SDL_SetAtomicU32 +#undef SDL_SetAtomicU32 +#endif // SDL_SetAtomicU32 +#define SDL_SetAtomicU32 SDL3_symbol_SDL_SetAtomicU32_is_marked_unused +#ifdef SDL_GetAtomicU32 +#undef SDL_GetAtomicU32 +#endif // SDL_GetAtomicU32 +#define SDL_GetAtomicU32 SDL3_symbol_SDL_GetAtomicU32_is_marked_unused +#ifdef SDL_AddAtomicU32 +#undef SDL_AddAtomicU32 +#endif // SDL_AddAtomicU32 +#define SDL_AddAtomicU32 SDL3_symbol_SDL_AddAtomicU32_is_marked_unused +#ifdef SDL_CompareAndSwapAtomicPointer +#undef SDL_CompareAndSwapAtomicPointer +#endif // SDL_CompareAndSwapAtomicPointer +#define SDL_CompareAndSwapAtomicPointer SDL3_symbol_SDL_CompareAndSwapAtomicPointer_is_marked_unused +#ifdef SDL_SetAtomicPointer +#undef SDL_SetAtomicPointer +#endif // SDL_SetAtomicPointer +#define SDL_SetAtomicPointer SDL3_symbol_SDL_SetAtomicPointer_is_marked_unused +#ifdef SDL_GetAtomicPointer +#undef SDL_GetAtomicPointer +#endif // SDL_GetAtomicPointer +#define SDL_GetAtomicPointer SDL3_symbol_SDL_GetAtomicPointer_is_marked_unused +#ifdef SDL_GetNumAudioDrivers +#undef SDL_GetNumAudioDrivers +#endif // SDL_GetNumAudioDrivers +#define SDL_GetNumAudioDrivers SDL3_symbol_SDL_GetNumAudioDrivers_is_marked_unused +#ifdef SDL_GetAudioDriver +#undef SDL_GetAudioDriver +#endif // SDL_GetAudioDriver +#define SDL_GetAudioDriver SDL3_symbol_SDL_GetAudioDriver_is_marked_unused +#ifdef SDL_GetCurrentAudioDriver +#undef SDL_GetCurrentAudioDriver +#endif // SDL_GetCurrentAudioDriver +#define SDL_GetCurrentAudioDriver SDL3_symbol_SDL_GetCurrentAudioDriver_is_marked_unused +#ifdef SDL_GetAudioPlaybackDevices +#undef SDL_GetAudioPlaybackDevices +#endif // SDL_GetAudioPlaybackDevices +#define SDL_GetAudioPlaybackDevices SDL3_symbol_SDL_GetAudioPlaybackDevices_is_marked_unused +#ifdef SDL_GetAudioRecordingDevices +#undef SDL_GetAudioRecordingDevices +#endif // SDL_GetAudioRecordingDevices +#define SDL_GetAudioRecordingDevices SDL3_symbol_SDL_GetAudioRecordingDevices_is_marked_unused +#ifdef SDL_GetAudioDeviceName +#undef SDL_GetAudioDeviceName +#endif // SDL_GetAudioDeviceName +#define SDL_GetAudioDeviceName SDL3_symbol_SDL_GetAudioDeviceName_is_marked_unused +#ifdef SDL_GetAudioDeviceFormat +#undef SDL_GetAudioDeviceFormat +#endif // SDL_GetAudioDeviceFormat +#define SDL_GetAudioDeviceFormat SDL3_symbol_SDL_GetAudioDeviceFormat_is_marked_unused +#ifdef SDL_GetAudioDeviceChannelMap +#undef SDL_GetAudioDeviceChannelMap +#endif // SDL_GetAudioDeviceChannelMap +#define SDL_GetAudioDeviceChannelMap SDL3_symbol_SDL_GetAudioDeviceChannelMap_is_marked_unused +#ifdef SDL_OpenAudioDevice +#undef SDL_OpenAudioDevice +#endif // SDL_OpenAudioDevice +#define SDL_OpenAudioDevice SDL3_symbol_SDL_OpenAudioDevice_is_marked_unused +#ifdef SDL_IsAudioDevicePhysical +#undef SDL_IsAudioDevicePhysical +#endif // SDL_IsAudioDevicePhysical +#define SDL_IsAudioDevicePhysical SDL3_symbol_SDL_IsAudioDevicePhysical_is_marked_unused +#ifdef SDL_IsAudioDevicePlayback +#undef SDL_IsAudioDevicePlayback +#endif // SDL_IsAudioDevicePlayback +#define SDL_IsAudioDevicePlayback SDL3_symbol_SDL_IsAudioDevicePlayback_is_marked_unused +#ifdef SDL_PauseAudioDevice +#undef SDL_PauseAudioDevice +#endif // SDL_PauseAudioDevice +#define SDL_PauseAudioDevice SDL3_symbol_SDL_PauseAudioDevice_is_marked_unused +#ifdef SDL_ResumeAudioDevice +#undef SDL_ResumeAudioDevice +#endif // SDL_ResumeAudioDevice +#define SDL_ResumeAudioDevice SDL3.SDL_ResumeAudioDevice_symbol +#ifdef SDL_AudioDevicePaused +#undef SDL_AudioDevicePaused +#endif // SDL_AudioDevicePaused +#define SDL_AudioDevicePaused SDL3_symbol_SDL_AudioDevicePaused_is_marked_unused +#ifdef SDL_GetAudioDeviceGain +#undef SDL_GetAudioDeviceGain +#endif // SDL_GetAudioDeviceGain +#define SDL_GetAudioDeviceGain SDL3_symbol_SDL_GetAudioDeviceGain_is_marked_unused +#ifdef SDL_SetAudioDeviceGain +#undef SDL_SetAudioDeviceGain +#endif // SDL_SetAudioDeviceGain +#define SDL_SetAudioDeviceGain SDL3_symbol_SDL_SetAudioDeviceGain_is_marked_unused +#ifdef SDL_CloseAudioDevice +#undef SDL_CloseAudioDevice +#endif // SDL_CloseAudioDevice +#define SDL_CloseAudioDevice SDL3_symbol_SDL_CloseAudioDevice_is_marked_unused +#ifdef SDL_BindAudioStreams +#undef SDL_BindAudioStreams +#endif // SDL_BindAudioStreams +#define SDL_BindAudioStreams SDL3_symbol_SDL_BindAudioStreams_is_marked_unused +#ifdef SDL_BindAudioStream +#undef SDL_BindAudioStream +#endif // SDL_BindAudioStream +#define SDL_BindAudioStream SDL3_symbol_SDL_BindAudioStream_is_marked_unused +#ifdef SDL_UnbindAudioStreams +#undef SDL_UnbindAudioStreams +#endif // SDL_UnbindAudioStreams +#define SDL_UnbindAudioStreams SDL3_symbol_SDL_UnbindAudioStreams_is_marked_unused +#ifdef SDL_UnbindAudioStream +#undef SDL_UnbindAudioStream +#endif // SDL_UnbindAudioStream +#define SDL_UnbindAudioStream SDL3_symbol_SDL_UnbindAudioStream_is_marked_unused +#ifdef SDL_GetAudioStreamDevice +#undef SDL_GetAudioStreamDevice +#endif // SDL_GetAudioStreamDevice +#define SDL_GetAudioStreamDevice SDL3.SDL_GetAudioStreamDevice_symbol +#ifdef SDL_CreateAudioStream +#undef SDL_CreateAudioStream +#endif // SDL_CreateAudioStream +#define SDL_CreateAudioStream SDL3_symbol_SDL_CreateAudioStream_is_marked_unused +#ifdef SDL_GetAudioStreamProperties +#undef SDL_GetAudioStreamProperties +#endif // SDL_GetAudioStreamProperties +#define SDL_GetAudioStreamProperties SDL3_symbol_SDL_GetAudioStreamProperties_is_marked_unused +#ifdef SDL_GetAudioStreamFormat +#undef SDL_GetAudioStreamFormat +#endif // SDL_GetAudioStreamFormat +#define SDL_GetAudioStreamFormat SDL3_symbol_SDL_GetAudioStreamFormat_is_marked_unused +#ifdef SDL_SetAudioStreamFormat +#undef SDL_SetAudioStreamFormat +#endif // SDL_SetAudioStreamFormat +#define SDL_SetAudioStreamFormat SDL3_symbol_SDL_SetAudioStreamFormat_is_marked_unused +#ifdef SDL_GetAudioStreamFrequencyRatio +#undef SDL_GetAudioStreamFrequencyRatio +#endif // SDL_GetAudioStreamFrequencyRatio +#define SDL_GetAudioStreamFrequencyRatio SDL3_symbol_SDL_GetAudioStreamFrequencyRatio_is_marked_unused +#ifdef SDL_SetAudioStreamFrequencyRatio +#undef SDL_SetAudioStreamFrequencyRatio +#endif // SDL_SetAudioStreamFrequencyRatio +#define SDL_SetAudioStreamFrequencyRatio SDL3_symbol_SDL_SetAudioStreamFrequencyRatio_is_marked_unused +#ifdef SDL_GetAudioStreamGain +#undef SDL_GetAudioStreamGain +#endif // SDL_GetAudioStreamGain +#define SDL_GetAudioStreamGain SDL3_symbol_SDL_GetAudioStreamGain_is_marked_unused +#ifdef SDL_SetAudioStreamGain +#undef SDL_SetAudioStreamGain +#endif // SDL_SetAudioStreamGain +#define SDL_SetAudioStreamGain SDL3_symbol_SDL_SetAudioStreamGain_is_marked_unused +#ifdef SDL_GetAudioStreamInputChannelMap +#undef SDL_GetAudioStreamInputChannelMap +#endif // SDL_GetAudioStreamInputChannelMap +#define SDL_GetAudioStreamInputChannelMap SDL3_symbol_SDL_GetAudioStreamInputChannelMap_is_marked_unused +#ifdef SDL_GetAudioStreamOutputChannelMap +#undef SDL_GetAudioStreamOutputChannelMap +#endif // SDL_GetAudioStreamOutputChannelMap +#define SDL_GetAudioStreamOutputChannelMap SDL3_symbol_SDL_GetAudioStreamOutputChannelMap_is_marked_unused +#ifdef SDL_SetAudioStreamInputChannelMap +#undef SDL_SetAudioStreamInputChannelMap +#endif // SDL_SetAudioStreamInputChannelMap +#define SDL_SetAudioStreamInputChannelMap SDL3_symbol_SDL_SetAudioStreamInputChannelMap_is_marked_unused +#ifdef SDL_SetAudioStreamOutputChannelMap +#undef SDL_SetAudioStreamOutputChannelMap +#endif // SDL_SetAudioStreamOutputChannelMap +#define SDL_SetAudioStreamOutputChannelMap SDL3_symbol_SDL_SetAudioStreamOutputChannelMap_is_marked_unused +#ifdef SDL_PutAudioStreamData +#undef SDL_PutAudioStreamData +#endif // SDL_PutAudioStreamData +#define SDL_PutAudioStreamData SDL3.SDL_PutAudioStreamData_symbol +#ifdef SDL_PutAudioStreamDataNoCopy +#undef SDL_PutAudioStreamDataNoCopy +#endif // SDL_PutAudioStreamDataNoCopy +#define SDL_PutAudioStreamDataNoCopy SDL3_symbol_SDL_PutAudioStreamDataNoCopy_is_marked_unused +#ifdef SDL_PutAudioStreamPlanarData +#undef SDL_PutAudioStreamPlanarData +#endif // SDL_PutAudioStreamPlanarData +#define SDL_PutAudioStreamPlanarData SDL3_symbol_SDL_PutAudioStreamPlanarData_is_marked_unused +#ifdef SDL_GetAudioStreamData +#undef SDL_GetAudioStreamData +#endif // SDL_GetAudioStreamData +#define SDL_GetAudioStreamData SDL3_symbol_SDL_GetAudioStreamData_is_marked_unused +#ifdef SDL_GetAudioStreamAvailable +#undef SDL_GetAudioStreamAvailable +#endif // SDL_GetAudioStreamAvailable +#define SDL_GetAudioStreamAvailable SDL3_symbol_SDL_GetAudioStreamAvailable_is_marked_unused +#ifdef SDL_GetAudioStreamQueued +#undef SDL_GetAudioStreamQueued +#endif // SDL_GetAudioStreamQueued +#define SDL_GetAudioStreamQueued SDL3_symbol_SDL_GetAudioStreamQueued_is_marked_unused +#ifdef SDL_FlushAudioStream +#undef SDL_FlushAudioStream +#endif // SDL_FlushAudioStream +#define SDL_FlushAudioStream SDL3_symbol_SDL_FlushAudioStream_is_marked_unused +#ifdef SDL_ClearAudioStream +#undef SDL_ClearAudioStream +#endif // SDL_ClearAudioStream +#define SDL_ClearAudioStream SDL3_symbol_SDL_ClearAudioStream_is_marked_unused +#ifdef SDL_PauseAudioStreamDevice +#undef SDL_PauseAudioStreamDevice +#endif // SDL_PauseAudioStreamDevice +#define SDL_PauseAudioStreamDevice SDL3_symbol_SDL_PauseAudioStreamDevice_is_marked_unused +#ifdef SDL_ResumeAudioStreamDevice +#undef SDL_ResumeAudioStreamDevice +#endif // SDL_ResumeAudioStreamDevice +#define SDL_ResumeAudioStreamDevice SDL3_symbol_SDL_ResumeAudioStreamDevice_is_marked_unused +#ifdef SDL_AudioStreamDevicePaused +#undef SDL_AudioStreamDevicePaused +#endif // SDL_AudioStreamDevicePaused +#define SDL_AudioStreamDevicePaused SDL3_symbol_SDL_AudioStreamDevicePaused_is_marked_unused +#ifdef SDL_LockAudioStream +#undef SDL_LockAudioStream +#endif // SDL_LockAudioStream +#define SDL_LockAudioStream SDL3_symbol_SDL_LockAudioStream_is_marked_unused +#ifdef SDL_UnlockAudioStream +#undef SDL_UnlockAudioStream +#endif // SDL_UnlockAudioStream +#define SDL_UnlockAudioStream SDL3_symbol_SDL_UnlockAudioStream_is_marked_unused +#ifdef SDL_SetAudioStreamGetCallback +#undef SDL_SetAudioStreamGetCallback +#endif // SDL_SetAudioStreamGetCallback +#define SDL_SetAudioStreamGetCallback SDL3_symbol_SDL_SetAudioStreamGetCallback_is_marked_unused +#ifdef SDL_SetAudioStreamPutCallback +#undef SDL_SetAudioStreamPutCallback +#endif // SDL_SetAudioStreamPutCallback +#define SDL_SetAudioStreamPutCallback SDL3_symbol_SDL_SetAudioStreamPutCallback_is_marked_unused +#ifdef SDL_DestroyAudioStream +#undef SDL_DestroyAudioStream +#endif // SDL_DestroyAudioStream +#define SDL_DestroyAudioStream SDL3.SDL_DestroyAudioStream_symbol +#ifdef SDL_OpenAudioDeviceStream +#undef SDL_OpenAudioDeviceStream +#endif // SDL_OpenAudioDeviceStream +#define SDL_OpenAudioDeviceStream SDL3.SDL_OpenAudioDeviceStream_symbol +#ifdef SDL_SetAudioPostmixCallback +#undef SDL_SetAudioPostmixCallback +#endif // SDL_SetAudioPostmixCallback +#define SDL_SetAudioPostmixCallback SDL3_symbol_SDL_SetAudioPostmixCallback_is_marked_unused +#ifdef SDL_LoadWAV_IO +#undef SDL_LoadWAV_IO +#endif // SDL_LoadWAV_IO +#define SDL_LoadWAV_IO SDL3_symbol_SDL_LoadWAV_IO_is_marked_unused +#ifdef SDL_LoadWAV +#undef SDL_LoadWAV +#endif // SDL_LoadWAV +#define SDL_LoadWAV SDL3_symbol_SDL_LoadWAV_is_marked_unused +#ifdef SDL_MixAudio +#undef SDL_MixAudio +#endif // SDL_MixAudio +#define SDL_MixAudio SDL3_symbol_SDL_MixAudio_is_marked_unused +#ifdef SDL_ConvertAudioSamples +#undef SDL_ConvertAudioSamples +#endif // SDL_ConvertAudioSamples +#define SDL_ConvertAudioSamples SDL3_symbol_SDL_ConvertAudioSamples_is_marked_unused +#ifdef SDL_GetAudioFormatName +#undef SDL_GetAudioFormatName +#endif // SDL_GetAudioFormatName +#define SDL_GetAudioFormatName SDL3_symbol_SDL_GetAudioFormatName_is_marked_unused +#ifdef SDL_GetSilenceValueForFormat +#undef SDL_GetSilenceValueForFormat +#endif // SDL_GetSilenceValueForFormat +#define SDL_GetSilenceValueForFormat SDL3_symbol_SDL_GetSilenceValueForFormat_is_marked_unused +#ifdef SDL_ComposeCustomBlendMode +#undef SDL_ComposeCustomBlendMode +#endif // SDL_ComposeCustomBlendMode +#define SDL_ComposeCustomBlendMode SDL3_symbol_SDL_ComposeCustomBlendMode_is_marked_unused +#ifdef SDL_GetNumCameraDrivers +#undef SDL_GetNumCameraDrivers +#endif // SDL_GetNumCameraDrivers +#define SDL_GetNumCameraDrivers SDL3_symbol_SDL_GetNumCameraDrivers_is_marked_unused +#ifdef SDL_GetCameraDriver +#undef SDL_GetCameraDriver +#endif // SDL_GetCameraDriver +#define SDL_GetCameraDriver SDL3_symbol_SDL_GetCameraDriver_is_marked_unused +#ifdef SDL_GetCurrentCameraDriver +#undef SDL_GetCurrentCameraDriver +#endif // SDL_GetCurrentCameraDriver +#define SDL_GetCurrentCameraDriver SDL3_symbol_SDL_GetCurrentCameraDriver_is_marked_unused +#ifdef SDL_GetCameras +#undef SDL_GetCameras +#endif // SDL_GetCameras +#define SDL_GetCameras SDL3_symbol_SDL_GetCameras_is_marked_unused +#ifdef SDL_GetCameraSupportedFormats +#undef SDL_GetCameraSupportedFormats +#endif // SDL_GetCameraSupportedFormats +#define SDL_GetCameraSupportedFormats SDL3_symbol_SDL_GetCameraSupportedFormats_is_marked_unused +#ifdef SDL_GetCameraName +#undef SDL_GetCameraName +#endif // SDL_GetCameraName +#define SDL_GetCameraName SDL3_symbol_SDL_GetCameraName_is_marked_unused +#ifdef SDL_GetCameraPosition +#undef SDL_GetCameraPosition +#endif // SDL_GetCameraPosition +#define SDL_GetCameraPosition SDL3_symbol_SDL_GetCameraPosition_is_marked_unused +#ifdef SDL_OpenCamera +#undef SDL_OpenCamera +#endif // SDL_OpenCamera +#define SDL_OpenCamera SDL3_symbol_SDL_OpenCamera_is_marked_unused +#ifdef SDL_GetCameraPermissionState +#undef SDL_GetCameraPermissionState +#endif // SDL_GetCameraPermissionState +#define SDL_GetCameraPermissionState SDL3_symbol_SDL_GetCameraPermissionState_is_marked_unused +#ifdef SDL_GetCameraID +#undef SDL_GetCameraID +#endif // SDL_GetCameraID +#define SDL_GetCameraID SDL3_symbol_SDL_GetCameraID_is_marked_unused +#ifdef SDL_GetCameraProperties +#undef SDL_GetCameraProperties +#endif // SDL_GetCameraProperties +#define SDL_GetCameraProperties SDL3_symbol_SDL_GetCameraProperties_is_marked_unused +#ifdef SDL_GetCameraFormat +#undef SDL_GetCameraFormat +#endif // SDL_GetCameraFormat +#define SDL_GetCameraFormat SDL3_symbol_SDL_GetCameraFormat_is_marked_unused +#ifdef SDL_AcquireCameraFrame +#undef SDL_AcquireCameraFrame +#endif // SDL_AcquireCameraFrame +#define SDL_AcquireCameraFrame SDL3_symbol_SDL_AcquireCameraFrame_is_marked_unused +#ifdef SDL_ReleaseCameraFrame +#undef SDL_ReleaseCameraFrame +#endif // SDL_ReleaseCameraFrame +#define SDL_ReleaseCameraFrame SDL3_symbol_SDL_ReleaseCameraFrame_is_marked_unused +#ifdef SDL_CloseCamera +#undef SDL_CloseCamera +#endif // SDL_CloseCamera +#define SDL_CloseCamera SDL3_symbol_SDL_CloseCamera_is_marked_unused +#ifdef SDL_SetClipboardText +#undef SDL_SetClipboardText +#endif // SDL_SetClipboardText +#define SDL_SetClipboardText SDL3_symbol_SDL_SetClipboardText_is_marked_unused +#ifdef SDL_GetClipboardText +#undef SDL_GetClipboardText +#endif // SDL_GetClipboardText +#define SDL_GetClipboardText SDL3_symbol_SDL_GetClipboardText_is_marked_unused +#ifdef SDL_HasClipboardText +#undef SDL_HasClipboardText +#endif // SDL_HasClipboardText +#define SDL_HasClipboardText SDL3_symbol_SDL_HasClipboardText_is_marked_unused +#ifdef SDL_SetPrimarySelectionText +#undef SDL_SetPrimarySelectionText +#endif // SDL_SetPrimarySelectionText +#define SDL_SetPrimarySelectionText SDL3_symbol_SDL_SetPrimarySelectionText_is_marked_unused +#ifdef SDL_GetPrimarySelectionText +#undef SDL_GetPrimarySelectionText +#endif // SDL_GetPrimarySelectionText +#define SDL_GetPrimarySelectionText SDL3_symbol_SDL_GetPrimarySelectionText_is_marked_unused +#ifdef SDL_HasPrimarySelectionText +#undef SDL_HasPrimarySelectionText +#endif // SDL_HasPrimarySelectionText +#define SDL_HasPrimarySelectionText SDL3_symbol_SDL_HasPrimarySelectionText_is_marked_unused +#ifdef SDL_SetClipboardData +#undef SDL_SetClipboardData +#endif // SDL_SetClipboardData +#define SDL_SetClipboardData SDL3_symbol_SDL_SetClipboardData_is_marked_unused +#ifdef SDL_ClearClipboardData +#undef SDL_ClearClipboardData +#endif // SDL_ClearClipboardData +#define SDL_ClearClipboardData SDL3_symbol_SDL_ClearClipboardData_is_marked_unused +#ifdef SDL_GetClipboardData +#undef SDL_GetClipboardData +#endif // SDL_GetClipboardData +#define SDL_GetClipboardData SDL3_symbol_SDL_GetClipboardData_is_marked_unused +#ifdef SDL_HasClipboardData +#undef SDL_HasClipboardData +#endif // SDL_HasClipboardData +#define SDL_HasClipboardData SDL3_symbol_SDL_HasClipboardData_is_marked_unused +#ifdef SDL_GetClipboardMimeTypes +#undef SDL_GetClipboardMimeTypes +#endif // SDL_GetClipboardMimeTypes +#define SDL_GetClipboardMimeTypes SDL3_symbol_SDL_GetClipboardMimeTypes_is_marked_unused +#ifdef SDL_GetNumLogicalCPUCores +#undef SDL_GetNumLogicalCPUCores +#endif // SDL_GetNumLogicalCPUCores +#define SDL_GetNumLogicalCPUCores SDL3_symbol_SDL_GetNumLogicalCPUCores_is_marked_unused +#ifdef SDL_GetCPUCacheLineSize +#undef SDL_GetCPUCacheLineSize +#endif // SDL_GetCPUCacheLineSize +#define SDL_GetCPUCacheLineSize SDL3_symbol_SDL_GetCPUCacheLineSize_is_marked_unused +#ifdef SDL_HasAltiVec +#undef SDL_HasAltiVec +#endif // SDL_HasAltiVec +#define SDL_HasAltiVec SDL3_symbol_SDL_HasAltiVec_is_marked_unused +#ifdef SDL_HasMMX +#undef SDL_HasMMX +#endif // SDL_HasMMX +#define SDL_HasMMX SDL3.SDL_HasMMX_symbol +#ifdef SDL_HasSSE +#undef SDL_HasSSE +#endif // SDL_HasSSE +#define SDL_HasSSE SDL3_symbol_SDL_HasSSE_is_marked_unused +#ifdef SDL_HasSSE2 +#undef SDL_HasSSE2 +#endif // SDL_HasSSE2 +#define SDL_HasSSE2 SDL3.SDL_HasSSE2_symbol +#ifdef SDL_HasSSE3 +#undef SDL_HasSSE3 +#endif // SDL_HasSSE3 +#define SDL_HasSSE3 SDL3_symbol_SDL_HasSSE3_is_marked_unused +#ifdef SDL_HasSSE41 +#undef SDL_HasSSE41 +#endif // SDL_HasSSE41 +#define SDL_HasSSE41 SDL3_symbol_SDL_HasSSE41_is_marked_unused +#ifdef SDL_HasSSE42 +#undef SDL_HasSSE42 +#endif // SDL_HasSSE42 +#define SDL_HasSSE42 SDL3_symbol_SDL_HasSSE42_is_marked_unused +#ifdef SDL_HasAVX +#undef SDL_HasAVX +#endif // SDL_HasAVX +#define SDL_HasAVX SDL3_symbol_SDL_HasAVX_is_marked_unused +#ifdef SDL_HasAVX2 +#undef SDL_HasAVX2 +#endif // SDL_HasAVX2 +#define SDL_HasAVX2 SDL3_symbol_SDL_HasAVX2_is_marked_unused +#ifdef SDL_HasAVX512F +#undef SDL_HasAVX512F +#endif // SDL_HasAVX512F +#define SDL_HasAVX512F SDL3_symbol_SDL_HasAVX512F_is_marked_unused +#ifdef SDL_HasARMSIMD +#undef SDL_HasARMSIMD +#endif // SDL_HasARMSIMD +#define SDL_HasARMSIMD SDL3_symbol_SDL_HasARMSIMD_is_marked_unused +#ifdef SDL_HasNEON +#undef SDL_HasNEON +#endif // SDL_HasNEON +#define SDL_HasNEON SDL3.SDL_HasNEON_symbol +#ifdef SDL_HasLSX +#undef SDL_HasLSX +#endif // SDL_HasLSX +#define SDL_HasLSX SDL3_symbol_SDL_HasLSX_is_marked_unused +#ifdef SDL_HasLASX +#undef SDL_HasLASX +#endif // SDL_HasLASX +#define SDL_HasLASX SDL3_symbol_SDL_HasLASX_is_marked_unused +#ifdef SDL_GetSystemRAM +#undef SDL_GetSystemRAM +#endif // SDL_GetSystemRAM +#define SDL_GetSystemRAM SDL3.SDL_GetSystemRAM_symbol +#ifdef SDL_GetSIMDAlignment +#undef SDL_GetSIMDAlignment +#endif // SDL_GetSIMDAlignment +#define SDL_GetSIMDAlignment SDL3_symbol_SDL_GetSIMDAlignment_is_marked_unused +#ifdef SDL_GetSystemPageSize +#undef SDL_GetSystemPageSize +#endif // SDL_GetSystemPageSize +#define SDL_GetSystemPageSize SDL3_symbol_SDL_GetSystemPageSize_is_marked_unused +#ifdef SDL_ShowOpenFileDialog +#undef SDL_ShowOpenFileDialog +#endif // SDL_ShowOpenFileDialog +#define SDL_ShowOpenFileDialog SDL3_symbol_SDL_ShowOpenFileDialog_is_marked_unused +#ifdef SDL_ShowSaveFileDialog +#undef SDL_ShowSaveFileDialog +#endif // SDL_ShowSaveFileDialog +#define SDL_ShowSaveFileDialog SDL3_symbol_SDL_ShowSaveFileDialog_is_marked_unused +#ifdef SDL_ShowOpenFolderDialog +#undef SDL_ShowOpenFolderDialog +#endif // SDL_ShowOpenFolderDialog +#define SDL_ShowOpenFolderDialog SDL3_symbol_SDL_ShowOpenFolderDialog_is_marked_unused +#ifdef SDL_ShowFileDialogWithProperties +#undef SDL_ShowFileDialogWithProperties +#endif // SDL_ShowFileDialogWithProperties +#define SDL_ShowFileDialogWithProperties SDL3_symbol_SDL_ShowFileDialogWithProperties_is_marked_unused +#ifdef SDL_SetError +#undef SDL_SetError +#endif // SDL_SetError +#define SDL_SetError SDL3.SDL_SetError_symbol +#ifdef SDL_SetErrorV +#undef SDL_SetErrorV +#endif // SDL_SetErrorV +#define SDL_SetErrorV SDL3_symbol_SDL_SetErrorV_is_marked_unused +#ifdef SDL_OutOfMemory +#undef SDL_OutOfMemory +#endif // SDL_OutOfMemory +#define SDL_OutOfMemory SDL3_symbol_SDL_OutOfMemory_is_marked_unused +#ifdef SDL_GetError +#undef SDL_GetError +#endif // SDL_GetError +#define SDL_GetError SDL3.SDL_GetError_symbol +#ifdef SDL_ClearError +#undef SDL_ClearError +#endif // SDL_ClearError +#define SDL_ClearError SDL3_symbol_SDL_ClearError_is_marked_unused +#ifdef SDL_PumpEvents +#undef SDL_PumpEvents +#endif // SDL_PumpEvents +#define SDL_PumpEvents SDL3_symbol_SDL_PumpEvents_is_marked_unused +#ifdef SDL_PeepEvents +#undef SDL_PeepEvents +#endif // SDL_PeepEvents +#define SDL_PeepEvents SDL3_symbol_SDL_PeepEvents_is_marked_unused +#ifdef SDL_HasEvent +#undef SDL_HasEvent +#endif // SDL_HasEvent +#define SDL_HasEvent SDL3_symbol_SDL_HasEvent_is_marked_unused +#ifdef SDL_HasEvents +#undef SDL_HasEvents +#endif // SDL_HasEvents +#define SDL_HasEvents SDL3_symbol_SDL_HasEvents_is_marked_unused +#ifdef SDL_FlushEvent +#undef SDL_FlushEvent +#endif // SDL_FlushEvent +#define SDL_FlushEvent SDL3_symbol_SDL_FlushEvent_is_marked_unused +#ifdef SDL_FlushEvents +#undef SDL_FlushEvents +#endif // SDL_FlushEvents +#define SDL_FlushEvents SDL3_symbol_SDL_FlushEvents_is_marked_unused +#ifdef SDL_PollEvent +#undef SDL_PollEvent +#endif // SDL_PollEvent +#define SDL_PollEvent SDL3_symbol_SDL_PollEvent_is_marked_unused +#ifdef SDL_WaitEvent +#undef SDL_WaitEvent +#endif // SDL_WaitEvent +#define SDL_WaitEvent SDL3_symbol_SDL_WaitEvent_is_marked_unused +#ifdef SDL_WaitEventTimeout +#undef SDL_WaitEventTimeout +#endif // SDL_WaitEventTimeout +#define SDL_WaitEventTimeout SDL3_symbol_SDL_WaitEventTimeout_is_marked_unused +#ifdef SDL_PushEvent +#undef SDL_PushEvent +#endif // SDL_PushEvent +#define SDL_PushEvent SDL3.SDL_PushEvent_symbol +#ifdef SDL_SetEventFilter +#undef SDL_SetEventFilter +#endif // SDL_SetEventFilter +#define SDL_SetEventFilter SDL3_symbol_SDL_SetEventFilter_is_marked_unused +#ifdef SDL_GetEventFilter +#undef SDL_GetEventFilter +#endif // SDL_GetEventFilter +#define SDL_GetEventFilter SDL3_symbol_SDL_GetEventFilter_is_marked_unused +#ifdef SDL_AddEventWatch +#undef SDL_AddEventWatch +#endif // SDL_AddEventWatch +#define SDL_AddEventWatch SDL3.SDL_AddEventWatch_symbol +#ifdef SDL_RemoveEventWatch +#undef SDL_RemoveEventWatch +#endif // SDL_RemoveEventWatch +#define SDL_RemoveEventWatch SDL3_symbol_SDL_RemoveEventWatch_is_marked_unused +#ifdef SDL_FilterEvents +#undef SDL_FilterEvents +#endif // SDL_FilterEvents +#define SDL_FilterEvents SDL3_symbol_SDL_FilterEvents_is_marked_unused +#ifdef SDL_SetEventEnabled +#undef SDL_SetEventEnabled +#endif // SDL_SetEventEnabled +#define SDL_SetEventEnabled SDL3_symbol_SDL_SetEventEnabled_is_marked_unused +#ifdef SDL_EventEnabled +#undef SDL_EventEnabled +#endif // SDL_EventEnabled +#define SDL_EventEnabled SDL3_symbol_SDL_EventEnabled_is_marked_unused +#ifdef SDL_RegisterEvents +#undef SDL_RegisterEvents +#endif // SDL_RegisterEvents +#define SDL_RegisterEvents SDL3.SDL_RegisterEvents_symbol +#ifdef SDL_GetWindowFromEvent +#undef SDL_GetWindowFromEvent +#endif // SDL_GetWindowFromEvent +#define SDL_GetWindowFromEvent SDL3_symbol_SDL_GetWindowFromEvent_is_marked_unused +#ifdef SDL_GetEventDescription +#undef SDL_GetEventDescription +#endif // SDL_GetEventDescription +#define SDL_GetEventDescription SDL3_symbol_SDL_GetEventDescription_is_marked_unused +#ifdef SDL_GetBasePath +#undef SDL_GetBasePath +#endif // SDL_GetBasePath +#define SDL_GetBasePath SDL3.SDL_GetBasePath_symbol +#ifdef SDL_GetPrefPath +#undef SDL_GetPrefPath +#endif // SDL_GetPrefPath +#define SDL_GetPrefPath SDL3.SDL_GetPrefPath_symbol +#ifdef SDL_GetUserFolder +#undef SDL_GetUserFolder +#endif // SDL_GetUserFolder +#define SDL_GetUserFolder SDL3.SDL_GetUserFolder_symbol +#ifdef SDL_CreateDirectory +#undef SDL_CreateDirectory +#endif // SDL_CreateDirectory +#define SDL_CreateDirectory SDL3.SDL_CreateDirectory_symbol +#ifdef SDL_EnumerateDirectory +#undef SDL_EnumerateDirectory +#endif // SDL_EnumerateDirectory +#define SDL_EnumerateDirectory SDL3_symbol_SDL_EnumerateDirectory_is_marked_unused +#ifdef SDL_RemovePath +#undef SDL_RemovePath +#endif // SDL_RemovePath +#define SDL_RemovePath SDL3.SDL_RemovePath_symbol +#ifdef SDL_RenamePath +#undef SDL_RenamePath +#endif // SDL_RenamePath +#define SDL_RenamePath SDL3.SDL_RenamePath_symbol +#ifdef SDL_CopyFile +#undef SDL_CopyFile +#endif // SDL_CopyFile +#define SDL_CopyFile SDL3_symbol_SDL_CopyFile_is_marked_unused +#ifdef SDL_GetPathInfo +#undef SDL_GetPathInfo +#endif // SDL_GetPathInfo +#define SDL_GetPathInfo SDL3.SDL_GetPathInfo_symbol +#ifdef SDL_GlobDirectory +#undef SDL_GlobDirectory +#endif // SDL_GlobDirectory +#define SDL_GlobDirectory SDL3.SDL_GlobDirectory_symbol +#ifdef SDL_GetCurrentDirectory +#undef SDL_GetCurrentDirectory +#endif // SDL_GetCurrentDirectory +#define SDL_GetCurrentDirectory SDL3_symbol_SDL_GetCurrentDirectory_is_marked_unused +#ifdef SDL_AddGamepadMapping +#undef SDL_AddGamepadMapping +#endif // SDL_AddGamepadMapping +#define SDL_AddGamepadMapping SDL3_symbol_SDL_AddGamepadMapping_is_marked_unused +#ifdef SDL_AddGamepadMappingsFromIO +#undef SDL_AddGamepadMappingsFromIO +#endif // SDL_AddGamepadMappingsFromIO +#define SDL_AddGamepadMappingsFromIO SDL3_symbol_SDL_AddGamepadMappingsFromIO_is_marked_unused +#ifdef SDL_AddGamepadMappingsFromFile +#undef SDL_AddGamepadMappingsFromFile +#endif // SDL_AddGamepadMappingsFromFile +#define SDL_AddGamepadMappingsFromFile SDL3_symbol_SDL_AddGamepadMappingsFromFile_is_marked_unused +#ifdef SDL_ReloadGamepadMappings +#undef SDL_ReloadGamepadMappings +#endif // SDL_ReloadGamepadMappings +#define SDL_ReloadGamepadMappings SDL3_symbol_SDL_ReloadGamepadMappings_is_marked_unused +#ifdef SDL_GetGamepadMappings +#undef SDL_GetGamepadMappings +#endif // SDL_GetGamepadMappings +#define SDL_GetGamepadMappings SDL3_symbol_SDL_GetGamepadMappings_is_marked_unused +#ifdef SDL_GetGamepadMappingForGUID +#undef SDL_GetGamepadMappingForGUID +#endif // SDL_GetGamepadMappingForGUID +#define SDL_GetGamepadMappingForGUID SDL3_symbol_SDL_GetGamepadMappingForGUID_is_marked_unused +#ifdef SDL_GetGamepadMapping +#undef SDL_GetGamepadMapping +#endif // SDL_GetGamepadMapping +#define SDL_GetGamepadMapping SDL3_symbol_SDL_GetGamepadMapping_is_marked_unused +#ifdef SDL_SetGamepadMapping +#undef SDL_SetGamepadMapping +#endif // SDL_SetGamepadMapping +#define SDL_SetGamepadMapping SDL3_symbol_SDL_SetGamepadMapping_is_marked_unused +#ifdef SDL_HasGamepad +#undef SDL_HasGamepad +#endif // SDL_HasGamepad +#define SDL_HasGamepad SDL3_symbol_SDL_HasGamepad_is_marked_unused +#ifdef SDL_GetGamepads +#undef SDL_GetGamepads +#endif // SDL_GetGamepads +#define SDL_GetGamepads SDL3_symbol_SDL_GetGamepads_is_marked_unused +#ifdef SDL_IsGamepad +#undef SDL_IsGamepad +#endif // SDL_IsGamepad +#define SDL_IsGamepad SDL3_symbol_SDL_IsGamepad_is_marked_unused +#ifdef SDL_GetGamepadNameForID +#undef SDL_GetGamepadNameForID +#endif // SDL_GetGamepadNameForID +#define SDL_GetGamepadNameForID SDL3_symbol_SDL_GetGamepadNameForID_is_marked_unused +#ifdef SDL_GetGamepadPathForID +#undef SDL_GetGamepadPathForID +#endif // SDL_GetGamepadPathForID +#define SDL_GetGamepadPathForID SDL3_symbol_SDL_GetGamepadPathForID_is_marked_unused +#ifdef SDL_GetGamepadPlayerIndexForID +#undef SDL_GetGamepadPlayerIndexForID +#endif // SDL_GetGamepadPlayerIndexForID +#define SDL_GetGamepadPlayerIndexForID SDL3_symbol_SDL_GetGamepadPlayerIndexForID_is_marked_unused +#ifdef SDL_GetGamepadGUIDForID +#undef SDL_GetGamepadGUIDForID +#endif // SDL_GetGamepadGUIDForID +#define SDL_GetGamepadGUIDForID SDL3_symbol_SDL_GetGamepadGUIDForID_is_marked_unused +#ifdef SDL_GetGamepadVendorForID +#undef SDL_GetGamepadVendorForID +#endif // SDL_GetGamepadVendorForID +#define SDL_GetGamepadVendorForID SDL3_symbol_SDL_GetGamepadVendorForID_is_marked_unused +#ifdef SDL_GetGamepadProductForID +#undef SDL_GetGamepadProductForID +#endif // SDL_GetGamepadProductForID +#define SDL_GetGamepadProductForID SDL3_symbol_SDL_GetGamepadProductForID_is_marked_unused +#ifdef SDL_GetGamepadProductVersionForID +#undef SDL_GetGamepadProductVersionForID +#endif // SDL_GetGamepadProductVersionForID +#define SDL_GetGamepadProductVersionForID SDL3_symbol_SDL_GetGamepadProductVersionForID_is_marked_unused +#ifdef SDL_GetGamepadTypeForID +#undef SDL_GetGamepadTypeForID +#endif // SDL_GetGamepadTypeForID +#define SDL_GetGamepadTypeForID SDL3_symbol_SDL_GetGamepadTypeForID_is_marked_unused +#ifdef SDL_GetRealGamepadTypeForID +#undef SDL_GetRealGamepadTypeForID +#endif // SDL_GetRealGamepadTypeForID +#define SDL_GetRealGamepadTypeForID SDL3_symbol_SDL_GetRealGamepadTypeForID_is_marked_unused +#ifdef SDL_GetGamepadMappingForID +#undef SDL_GetGamepadMappingForID +#endif // SDL_GetGamepadMappingForID +#define SDL_GetGamepadMappingForID SDL3_symbol_SDL_GetGamepadMappingForID_is_marked_unused +#ifdef SDL_OpenGamepad +#undef SDL_OpenGamepad +#endif // SDL_OpenGamepad +#define SDL_OpenGamepad SDL3.SDL_OpenGamepad_symbol +#ifdef SDL_GetGamepadFromID +#undef SDL_GetGamepadFromID +#endif // SDL_GetGamepadFromID +#define SDL_GetGamepadFromID SDL3_symbol_SDL_GetGamepadFromID_is_marked_unused +#ifdef SDL_GetGamepadFromPlayerIndex +#undef SDL_GetGamepadFromPlayerIndex +#endif // SDL_GetGamepadFromPlayerIndex +#define SDL_GetGamepadFromPlayerIndex SDL3_symbol_SDL_GetGamepadFromPlayerIndex_is_marked_unused +#ifdef SDL_GetGamepadProperties +#undef SDL_GetGamepadProperties +#endif // SDL_GetGamepadProperties +#define SDL_GetGamepadProperties SDL3_symbol_SDL_GetGamepadProperties_is_marked_unused +#ifdef SDL_GetGamepadID +#undef SDL_GetGamepadID +#endif // SDL_GetGamepadID +#define SDL_GetGamepadID SDL3_symbol_SDL_GetGamepadID_is_marked_unused +#ifdef SDL_GetGamepadName +#undef SDL_GetGamepadName +#endif // SDL_GetGamepadName +#define SDL_GetGamepadName SDL3_symbol_SDL_GetGamepadName_is_marked_unused +#ifdef SDL_GetGamepadPath +#undef SDL_GetGamepadPath +#endif // SDL_GetGamepadPath +#define SDL_GetGamepadPath SDL3_symbol_SDL_GetGamepadPath_is_marked_unused +#ifdef SDL_GetGamepadType +#undef SDL_GetGamepadType +#endif // SDL_GetGamepadType +#define SDL_GetGamepadType SDL3_symbol_SDL_GetGamepadType_is_marked_unused +#ifdef SDL_GetRealGamepadType +#undef SDL_GetRealGamepadType +#endif // SDL_GetRealGamepadType +#define SDL_GetRealGamepadType SDL3_symbol_SDL_GetRealGamepadType_is_marked_unused +#ifdef SDL_GetGamepadPlayerIndex +#undef SDL_GetGamepadPlayerIndex +#endif // SDL_GetGamepadPlayerIndex +#define SDL_GetGamepadPlayerIndex SDL3_symbol_SDL_GetGamepadPlayerIndex_is_marked_unused +#ifdef SDL_SetGamepadPlayerIndex +#undef SDL_SetGamepadPlayerIndex +#endif // SDL_SetGamepadPlayerIndex +#define SDL_SetGamepadPlayerIndex SDL3_symbol_SDL_SetGamepadPlayerIndex_is_marked_unused +#ifdef SDL_GetGamepadVendor +#undef SDL_GetGamepadVendor +#endif // SDL_GetGamepadVendor +#define SDL_GetGamepadVendor SDL3_symbol_SDL_GetGamepadVendor_is_marked_unused +#ifdef SDL_GetGamepadProduct +#undef SDL_GetGamepadProduct +#endif // SDL_GetGamepadProduct +#define SDL_GetGamepadProduct SDL3_symbol_SDL_GetGamepadProduct_is_marked_unused +#ifdef SDL_GetGamepadProductVersion +#undef SDL_GetGamepadProductVersion +#endif // SDL_GetGamepadProductVersion +#define SDL_GetGamepadProductVersion SDL3_symbol_SDL_GetGamepadProductVersion_is_marked_unused +#ifdef SDL_GetGamepadFirmwareVersion +#undef SDL_GetGamepadFirmwareVersion +#endif // SDL_GetGamepadFirmwareVersion +#define SDL_GetGamepadFirmwareVersion SDL3_symbol_SDL_GetGamepadFirmwareVersion_is_marked_unused +#ifdef SDL_GetGamepadSerial +#undef SDL_GetGamepadSerial +#endif // SDL_GetGamepadSerial +#define SDL_GetGamepadSerial SDL3_symbol_SDL_GetGamepadSerial_is_marked_unused +#ifdef SDL_GetGamepadSteamHandle +#undef SDL_GetGamepadSteamHandle +#endif // SDL_GetGamepadSteamHandle +#define SDL_GetGamepadSteamHandle SDL3_symbol_SDL_GetGamepadSteamHandle_is_marked_unused +#ifdef SDL_GetGamepadConnectionState +#undef SDL_GetGamepadConnectionState +#endif // SDL_GetGamepadConnectionState +#define SDL_GetGamepadConnectionState SDL3_symbol_SDL_GetGamepadConnectionState_is_marked_unused +#ifdef SDL_GetGamepadPowerInfo +#undef SDL_GetGamepadPowerInfo +#endif // SDL_GetGamepadPowerInfo +#define SDL_GetGamepadPowerInfo SDL3_symbol_SDL_GetGamepadPowerInfo_is_marked_unused +#ifdef SDL_GamepadConnected +#undef SDL_GamepadConnected +#endif // SDL_GamepadConnected +#define SDL_GamepadConnected SDL3_symbol_SDL_GamepadConnected_is_marked_unused +#ifdef SDL_GetGamepadJoystick +#undef SDL_GetGamepadJoystick +#endif // SDL_GetGamepadJoystick +#define SDL_GetGamepadJoystick SDL3.SDL_GetGamepadJoystick_symbol +#ifdef SDL_SetGamepadEventsEnabled +#undef SDL_SetGamepadEventsEnabled +#endif // SDL_SetGamepadEventsEnabled +#define SDL_SetGamepadEventsEnabled SDL3_symbol_SDL_SetGamepadEventsEnabled_is_marked_unused +#ifdef SDL_GamepadEventsEnabled +#undef SDL_GamepadEventsEnabled +#endif // SDL_GamepadEventsEnabled +#define SDL_GamepadEventsEnabled SDL3_symbol_SDL_GamepadEventsEnabled_is_marked_unused +#ifdef SDL_GetGamepadBindings +#undef SDL_GetGamepadBindings +#endif // SDL_GetGamepadBindings +#define SDL_GetGamepadBindings SDL3_symbol_SDL_GetGamepadBindings_is_marked_unused +#ifdef SDL_UpdateGamepads +#undef SDL_UpdateGamepads +#endif // SDL_UpdateGamepads +#define SDL_UpdateGamepads SDL3_symbol_SDL_UpdateGamepads_is_marked_unused +#ifdef SDL_GetGamepadTypeFromString +#undef SDL_GetGamepadTypeFromString +#endif // SDL_GetGamepadTypeFromString +#define SDL_GetGamepadTypeFromString SDL3_symbol_SDL_GetGamepadTypeFromString_is_marked_unused +#ifdef SDL_GetGamepadStringForType +#undef SDL_GetGamepadStringForType +#endif // SDL_GetGamepadStringForType +#define SDL_GetGamepadStringForType SDL3_symbol_SDL_GetGamepadStringForType_is_marked_unused +#ifdef SDL_GetGamepadAxisFromString +#undef SDL_GetGamepadAxisFromString +#endif // SDL_GetGamepadAxisFromString +#define SDL_GetGamepadAxisFromString SDL3_symbol_SDL_GetGamepadAxisFromString_is_marked_unused +#ifdef SDL_GetGamepadStringForAxis +#undef SDL_GetGamepadStringForAxis +#endif // SDL_GetGamepadStringForAxis +#define SDL_GetGamepadStringForAxis SDL3_symbol_SDL_GetGamepadStringForAxis_is_marked_unused +#ifdef SDL_GamepadHasAxis +#undef SDL_GamepadHasAxis +#endif // SDL_GamepadHasAxis +#define SDL_GamepadHasAxis SDL3_symbol_SDL_GamepadHasAxis_is_marked_unused +#ifdef SDL_GetGamepadAxis +#undef SDL_GetGamepadAxis +#endif // SDL_GetGamepadAxis +#define SDL_GetGamepadAxis SDL3.SDL_GetGamepadAxis_symbol +#ifdef SDL_GetGamepadButtonFromString +#undef SDL_GetGamepadButtonFromString +#endif // SDL_GetGamepadButtonFromString +#define SDL_GetGamepadButtonFromString SDL3_symbol_SDL_GetGamepadButtonFromString_is_marked_unused +#ifdef SDL_GetGamepadStringForButton +#undef SDL_GetGamepadStringForButton +#endif // SDL_GetGamepadStringForButton +#define SDL_GetGamepadStringForButton SDL3_symbol_SDL_GetGamepadStringForButton_is_marked_unused +#ifdef SDL_GamepadHasButton +#undef SDL_GamepadHasButton +#endif // SDL_GamepadHasButton +#define SDL_GamepadHasButton SDL3_symbol_SDL_GamepadHasButton_is_marked_unused +#ifdef SDL_GetGamepadButton +#undef SDL_GetGamepadButton +#endif // SDL_GetGamepadButton +#define SDL_GetGamepadButton SDL3_symbol_SDL_GetGamepadButton_is_marked_unused +#ifdef SDL_GetGamepadButtonLabelForType +#undef SDL_GetGamepadButtonLabelForType +#endif // SDL_GetGamepadButtonLabelForType +#define SDL_GetGamepadButtonLabelForType SDL3_symbol_SDL_GetGamepadButtonLabelForType_is_marked_unused +#ifdef SDL_GetGamepadButtonLabel +#undef SDL_GetGamepadButtonLabel +#endif // SDL_GetGamepadButtonLabel +#define SDL_GetGamepadButtonLabel SDL3_symbol_SDL_GetGamepadButtonLabel_is_marked_unused +#ifdef SDL_GetNumGamepadTouchpads +#undef SDL_GetNumGamepadTouchpads +#endif // SDL_GetNumGamepadTouchpads +#define SDL_GetNumGamepadTouchpads SDL3_symbol_SDL_GetNumGamepadTouchpads_is_marked_unused +#ifdef SDL_GetNumGamepadTouchpadFingers +#undef SDL_GetNumGamepadTouchpadFingers +#endif // SDL_GetNumGamepadTouchpadFingers +#define SDL_GetNumGamepadTouchpadFingers SDL3_symbol_SDL_GetNumGamepadTouchpadFingers_is_marked_unused +#ifdef SDL_GetGamepadTouchpadFinger +#undef SDL_GetGamepadTouchpadFinger +#endif // SDL_GetGamepadTouchpadFinger +#define SDL_GetGamepadTouchpadFinger SDL3_symbol_SDL_GetGamepadTouchpadFinger_is_marked_unused +#ifdef SDL_GamepadHasSensor +#undef SDL_GamepadHasSensor +#endif // SDL_GamepadHasSensor +#define SDL_GamepadHasSensor SDL3_symbol_SDL_GamepadHasSensor_is_marked_unused +#ifdef SDL_SetGamepadSensorEnabled +#undef SDL_SetGamepadSensorEnabled +#endif // SDL_SetGamepadSensorEnabled +#define SDL_SetGamepadSensorEnabled SDL3_symbol_SDL_SetGamepadSensorEnabled_is_marked_unused +#ifdef SDL_GamepadSensorEnabled +#undef SDL_GamepadSensorEnabled +#endif // SDL_GamepadSensorEnabled +#define SDL_GamepadSensorEnabled SDL3_symbol_SDL_GamepadSensorEnabled_is_marked_unused +#ifdef SDL_GetGamepadSensorDataRate +#undef SDL_GetGamepadSensorDataRate +#endif // SDL_GetGamepadSensorDataRate +#define SDL_GetGamepadSensorDataRate SDL3_symbol_SDL_GetGamepadSensorDataRate_is_marked_unused +#ifdef SDL_GetGamepadSensorData +#undef SDL_GetGamepadSensorData +#endif // SDL_GetGamepadSensorData +#define SDL_GetGamepadSensorData SDL3_symbol_SDL_GetGamepadSensorData_is_marked_unused +#ifdef SDL_RumbleGamepad +#undef SDL_RumbleGamepad +#endif // SDL_RumbleGamepad +#define SDL_RumbleGamepad SDL3.SDL_RumbleGamepad_symbol +#ifdef SDL_RumbleGamepadTriggers +#undef SDL_RumbleGamepadTriggers +#endif // SDL_RumbleGamepadTriggers +#define SDL_RumbleGamepadTriggers SDL3_symbol_SDL_RumbleGamepadTriggers_is_marked_unused +#ifdef SDL_SetGamepadLED +#undef SDL_SetGamepadLED +#endif // SDL_SetGamepadLED +#define SDL_SetGamepadLED SDL3_symbol_SDL_SetGamepadLED_is_marked_unused +#ifdef SDL_SendGamepadEffect +#undef SDL_SendGamepadEffect +#endif // SDL_SendGamepadEffect +#define SDL_SendGamepadEffect SDL3_symbol_SDL_SendGamepadEffect_is_marked_unused +#ifdef SDL_CloseGamepad +#undef SDL_CloseGamepad +#endif // SDL_CloseGamepad +#define SDL_CloseGamepad SDL3.SDL_CloseGamepad_symbol +#ifdef SDL_GetGamepadAppleSFSymbolsNameForButton +#undef SDL_GetGamepadAppleSFSymbolsNameForButton +#endif // SDL_GetGamepadAppleSFSymbolsNameForButton +#define SDL_GetGamepadAppleSFSymbolsNameForButton SDL3_symbol_SDL_GetGamepadAppleSFSymbolsNameForButton_is_marked_unused +#ifdef SDL_GetGamepadAppleSFSymbolsNameForAxis +#undef SDL_GetGamepadAppleSFSymbolsNameForAxis +#endif // SDL_GetGamepadAppleSFSymbolsNameForAxis +#define SDL_GetGamepadAppleSFSymbolsNameForAxis SDL3_symbol_SDL_GetGamepadAppleSFSymbolsNameForAxis_is_marked_unused +#ifdef SDL_GPUSupportsShaderFormats +#undef SDL_GPUSupportsShaderFormats +#endif // SDL_GPUSupportsShaderFormats +#define SDL_GPUSupportsShaderFormats SDL3_symbol_SDL_GPUSupportsShaderFormats_is_marked_unused +#ifdef SDL_GPUSupportsProperties +#undef SDL_GPUSupportsProperties +#endif // SDL_GPUSupportsProperties +#define SDL_GPUSupportsProperties SDL3_symbol_SDL_GPUSupportsProperties_is_marked_unused +#ifdef SDL_CreateGPUDevice +#undef SDL_CreateGPUDevice +#endif // SDL_CreateGPUDevice +#define SDL_CreateGPUDevice SDL3.SDL_CreateGPUDevice_symbol +#ifdef SDL_CreateGPUDeviceWithProperties +#undef SDL_CreateGPUDeviceWithProperties +#endif // SDL_CreateGPUDeviceWithProperties +#define SDL_CreateGPUDeviceWithProperties SDL3_symbol_SDL_CreateGPUDeviceWithProperties_is_marked_unused +#ifdef SDL_DestroyGPUDevice +#undef SDL_DestroyGPUDevice +#endif // SDL_DestroyGPUDevice +#define SDL_DestroyGPUDevice SDL3.SDL_DestroyGPUDevice_symbol +#ifdef SDL_GetNumGPUDrivers +#undef SDL_GetNumGPUDrivers +#endif // SDL_GetNumGPUDrivers +#define SDL_GetNumGPUDrivers SDL3_symbol_SDL_GetNumGPUDrivers_is_marked_unused +#ifdef SDL_GetGPUDriver +#undef SDL_GetGPUDriver +#endif // SDL_GetGPUDriver +#define SDL_GetGPUDriver SDL3_symbol_SDL_GetGPUDriver_is_marked_unused +#ifdef SDL_GetGPUDeviceDriver +#undef SDL_GetGPUDeviceDriver +#endif // SDL_GetGPUDeviceDriver +#define SDL_GetGPUDeviceDriver SDL3_symbol_SDL_GetGPUDeviceDriver_is_marked_unused +#ifdef SDL_GetGPUShaderFormats +#undef SDL_GetGPUShaderFormats +#endif // SDL_GetGPUShaderFormats +#define SDL_GetGPUShaderFormats SDL3.SDL_GetGPUShaderFormats_symbol +#ifdef SDL_GetGPUDeviceProperties +#undef SDL_GetGPUDeviceProperties +#endif // SDL_GetGPUDeviceProperties +#define SDL_GetGPUDeviceProperties SDL3_symbol_SDL_GetGPUDeviceProperties_is_marked_unused +#ifdef SDL_CreateGPUComputePipeline +#undef SDL_CreateGPUComputePipeline +#endif // SDL_CreateGPUComputePipeline +#define SDL_CreateGPUComputePipeline SDL3_symbol_SDL_CreateGPUComputePipeline_is_marked_unused +#ifdef SDL_CreateGPUGraphicsPipeline +#undef SDL_CreateGPUGraphicsPipeline +#endif // SDL_CreateGPUGraphicsPipeline +#define SDL_CreateGPUGraphicsPipeline SDL3.SDL_CreateGPUGraphicsPipeline_symbol +#ifdef SDL_CreateGPUSampler +#undef SDL_CreateGPUSampler +#endif // SDL_CreateGPUSampler +#define SDL_CreateGPUSampler SDL3.SDL_CreateGPUSampler_symbol +#ifdef SDL_CreateGPUShader +#undef SDL_CreateGPUShader +#endif // SDL_CreateGPUShader +#define SDL_CreateGPUShader SDL3.SDL_CreateGPUShader_symbol +#ifdef SDL_CreateGPUTexture +#undef SDL_CreateGPUTexture +#endif // SDL_CreateGPUTexture +#define SDL_CreateGPUTexture SDL3.SDL_CreateGPUTexture_symbol +#ifdef SDL_CreateGPUBuffer +#undef SDL_CreateGPUBuffer +#endif // SDL_CreateGPUBuffer +#define SDL_CreateGPUBuffer SDL3.SDL_CreateGPUBuffer_symbol +#ifdef SDL_CreateGPUTransferBuffer +#undef SDL_CreateGPUTransferBuffer +#endif // SDL_CreateGPUTransferBuffer +#define SDL_CreateGPUTransferBuffer SDL3.SDL_CreateGPUTransferBuffer_symbol +#ifdef SDL_SetGPUBufferName +#undef SDL_SetGPUBufferName +#endif // SDL_SetGPUBufferName +#define SDL_SetGPUBufferName SDL3_symbol_SDL_SetGPUBufferName_is_marked_unused +#ifdef SDL_SetGPUTextureName +#undef SDL_SetGPUTextureName +#endif // SDL_SetGPUTextureName +#define SDL_SetGPUTextureName SDL3_symbol_SDL_SetGPUTextureName_is_marked_unused +#ifdef SDL_InsertGPUDebugLabel +#undef SDL_InsertGPUDebugLabel +#endif // SDL_InsertGPUDebugLabel +#define SDL_InsertGPUDebugLabel SDL3_symbol_SDL_InsertGPUDebugLabel_is_marked_unused +#ifdef SDL_PushGPUDebugGroup +#undef SDL_PushGPUDebugGroup +#endif // SDL_PushGPUDebugGroup +#define SDL_PushGPUDebugGroup SDL3_symbol_SDL_PushGPUDebugGroup_is_marked_unused +#ifdef SDL_PopGPUDebugGroup +#undef SDL_PopGPUDebugGroup +#endif // SDL_PopGPUDebugGroup +#define SDL_PopGPUDebugGroup SDL3_symbol_SDL_PopGPUDebugGroup_is_marked_unused +#ifdef SDL_ReleaseGPUTexture +#undef SDL_ReleaseGPUTexture +#endif // SDL_ReleaseGPUTexture +#define SDL_ReleaseGPUTexture SDL3.SDL_ReleaseGPUTexture_symbol +#ifdef SDL_ReleaseGPUSampler +#undef SDL_ReleaseGPUSampler +#endif // SDL_ReleaseGPUSampler +#define SDL_ReleaseGPUSampler SDL3.SDL_ReleaseGPUSampler_symbol +#ifdef SDL_ReleaseGPUBuffer +#undef SDL_ReleaseGPUBuffer +#endif // SDL_ReleaseGPUBuffer +#define SDL_ReleaseGPUBuffer SDL3.SDL_ReleaseGPUBuffer_symbol +#ifdef SDL_ReleaseGPUTransferBuffer +#undef SDL_ReleaseGPUTransferBuffer +#endif // SDL_ReleaseGPUTransferBuffer +#define SDL_ReleaseGPUTransferBuffer SDL3.SDL_ReleaseGPUTransferBuffer_symbol +#ifdef SDL_ReleaseGPUComputePipeline +#undef SDL_ReleaseGPUComputePipeline +#endif // SDL_ReleaseGPUComputePipeline +#define SDL_ReleaseGPUComputePipeline SDL3_symbol_SDL_ReleaseGPUComputePipeline_is_marked_unused +#ifdef SDL_ReleaseGPUShader +#undef SDL_ReleaseGPUShader +#endif // SDL_ReleaseGPUShader +#define SDL_ReleaseGPUShader SDL3.SDL_ReleaseGPUShader_symbol +#ifdef SDL_ReleaseGPUGraphicsPipeline +#undef SDL_ReleaseGPUGraphicsPipeline +#endif // SDL_ReleaseGPUGraphicsPipeline +#define SDL_ReleaseGPUGraphicsPipeline SDL3.SDL_ReleaseGPUGraphicsPipeline_symbol +#ifdef SDL_AcquireGPUCommandBuffer +#undef SDL_AcquireGPUCommandBuffer +#endif // SDL_AcquireGPUCommandBuffer +#define SDL_AcquireGPUCommandBuffer SDL3.SDL_AcquireGPUCommandBuffer_symbol +#ifdef SDL_PushGPUVertexUniformData +#undef SDL_PushGPUVertexUniformData +#endif // SDL_PushGPUVertexUniformData +#define SDL_PushGPUVertexUniformData SDL3.SDL_PushGPUVertexUniformData_symbol +#ifdef SDL_PushGPUFragmentUniformData +#undef SDL_PushGPUFragmentUniformData +#endif // SDL_PushGPUFragmentUniformData +#define SDL_PushGPUFragmentUniformData SDL3.SDL_PushGPUFragmentUniformData_symbol +#ifdef SDL_PushGPUComputeUniformData +#undef SDL_PushGPUComputeUniformData +#endif // SDL_PushGPUComputeUniformData +#define SDL_PushGPUComputeUniformData SDL3_symbol_SDL_PushGPUComputeUniformData_is_marked_unused +#ifdef SDL_BeginGPURenderPass +#undef SDL_BeginGPURenderPass +#endif // SDL_BeginGPURenderPass +#define SDL_BeginGPURenderPass SDL3.SDL_BeginGPURenderPass_symbol +#ifdef SDL_BindGPUGraphicsPipeline +#undef SDL_BindGPUGraphicsPipeline +#endif // SDL_BindGPUGraphicsPipeline +#define SDL_BindGPUGraphicsPipeline SDL3.SDL_BindGPUGraphicsPipeline_symbol +#ifdef SDL_SetGPUViewport +#undef SDL_SetGPUViewport +#endif // SDL_SetGPUViewport +#define SDL_SetGPUViewport SDL3_symbol_SDL_SetGPUViewport_is_marked_unused +#ifdef SDL_SetGPUScissor +#undef SDL_SetGPUScissor +#endif // SDL_SetGPUScissor +#define SDL_SetGPUScissor SDL3.SDL_SetGPUScissor_symbol +#ifdef SDL_SetGPUBlendConstants +#undef SDL_SetGPUBlendConstants +#endif // SDL_SetGPUBlendConstants +#define SDL_SetGPUBlendConstants SDL3_symbol_SDL_SetGPUBlendConstants_is_marked_unused +#ifdef SDL_SetGPUStencilReference +#undef SDL_SetGPUStencilReference +#endif // SDL_SetGPUStencilReference +#define SDL_SetGPUStencilReference SDL3_symbol_SDL_SetGPUStencilReference_is_marked_unused +#ifdef SDL_BindGPUVertexBuffers +#undef SDL_BindGPUVertexBuffers +#endif // SDL_BindGPUVertexBuffers +#define SDL_BindGPUVertexBuffers SDL3.SDL_BindGPUVertexBuffers_symbol +#ifdef SDL_BindGPUIndexBuffer +#undef SDL_BindGPUIndexBuffer +#endif // SDL_BindGPUIndexBuffer +#define SDL_BindGPUIndexBuffer SDL3.SDL_BindGPUIndexBuffer_symbol +#ifdef SDL_BindGPUVertexSamplers +#undef SDL_BindGPUVertexSamplers +#endif // SDL_BindGPUVertexSamplers +#define SDL_BindGPUVertexSamplers SDL3_symbol_SDL_BindGPUVertexSamplers_is_marked_unused +#ifdef SDL_BindGPUVertexStorageTextures +#undef SDL_BindGPUVertexStorageTextures +#endif // SDL_BindGPUVertexStorageTextures +#define SDL_BindGPUVertexStorageTextures SDL3_symbol_SDL_BindGPUVertexStorageTextures_is_marked_unused +#ifdef SDL_BindGPUVertexStorageBuffers +#undef SDL_BindGPUVertexStorageBuffers +#endif // SDL_BindGPUVertexStorageBuffers +#define SDL_BindGPUVertexStorageBuffers SDL3_symbol_SDL_BindGPUVertexStorageBuffers_is_marked_unused +#ifdef SDL_BindGPUFragmentSamplers +#undef SDL_BindGPUFragmentSamplers +#endif // SDL_BindGPUFragmentSamplers +#define SDL_BindGPUFragmentSamplers SDL3.SDL_BindGPUFragmentSamplers_symbol +#ifdef SDL_BindGPUFragmentStorageTextures +#undef SDL_BindGPUFragmentStorageTextures +#endif // SDL_BindGPUFragmentStorageTextures +#define SDL_BindGPUFragmentStorageTextures SDL3_symbol_SDL_BindGPUFragmentStorageTextures_is_marked_unused +#ifdef SDL_BindGPUFragmentStorageBuffers +#undef SDL_BindGPUFragmentStorageBuffers +#endif // SDL_BindGPUFragmentStorageBuffers +#define SDL_BindGPUFragmentStorageBuffers SDL3_symbol_SDL_BindGPUFragmentStorageBuffers_is_marked_unused +#ifdef SDL_DrawGPUIndexedPrimitives +#undef SDL_DrawGPUIndexedPrimitives +#endif // SDL_DrawGPUIndexedPrimitives +#define SDL_DrawGPUIndexedPrimitives SDL3.SDL_DrawGPUIndexedPrimitives_symbol +#ifdef SDL_DrawGPUPrimitives +#undef SDL_DrawGPUPrimitives +#endif // SDL_DrawGPUPrimitives +#define SDL_DrawGPUPrimitives SDL3_symbol_SDL_DrawGPUPrimitives_is_marked_unused +#ifdef SDL_DrawGPUPrimitivesIndirect +#undef SDL_DrawGPUPrimitivesIndirect +#endif // SDL_DrawGPUPrimitivesIndirect +#define SDL_DrawGPUPrimitivesIndirect SDL3_symbol_SDL_DrawGPUPrimitivesIndirect_is_marked_unused +#ifdef SDL_DrawGPUIndexedPrimitivesIndirect +#undef SDL_DrawGPUIndexedPrimitivesIndirect +#endif // SDL_DrawGPUIndexedPrimitivesIndirect +#define SDL_DrawGPUIndexedPrimitivesIndirect SDL3_symbol_SDL_DrawGPUIndexedPrimitivesIndirect_is_marked_unused +#ifdef SDL_EndGPURenderPass +#undef SDL_EndGPURenderPass +#endif // SDL_EndGPURenderPass +#define SDL_EndGPURenderPass SDL3.SDL_EndGPURenderPass_symbol +#ifdef SDL_BeginGPUComputePass +#undef SDL_BeginGPUComputePass +#endif // SDL_BeginGPUComputePass +#define SDL_BeginGPUComputePass SDL3_symbol_SDL_BeginGPUComputePass_is_marked_unused +#ifdef SDL_BindGPUComputePipeline +#undef SDL_BindGPUComputePipeline +#endif // SDL_BindGPUComputePipeline +#define SDL_BindGPUComputePipeline SDL3_symbol_SDL_BindGPUComputePipeline_is_marked_unused +#ifdef SDL_BindGPUComputeSamplers +#undef SDL_BindGPUComputeSamplers +#endif // SDL_BindGPUComputeSamplers +#define SDL_BindGPUComputeSamplers SDL3_symbol_SDL_BindGPUComputeSamplers_is_marked_unused +#ifdef SDL_BindGPUComputeStorageTextures +#undef SDL_BindGPUComputeStorageTextures +#endif // SDL_BindGPUComputeStorageTextures +#define SDL_BindGPUComputeStorageTextures SDL3_symbol_SDL_BindGPUComputeStorageTextures_is_marked_unused +#ifdef SDL_BindGPUComputeStorageBuffers +#undef SDL_BindGPUComputeStorageBuffers +#endif // SDL_BindGPUComputeStorageBuffers +#define SDL_BindGPUComputeStorageBuffers SDL3_symbol_SDL_BindGPUComputeStorageBuffers_is_marked_unused +#ifdef SDL_DispatchGPUCompute +#undef SDL_DispatchGPUCompute +#endif // SDL_DispatchGPUCompute +#define SDL_DispatchGPUCompute SDL3_symbol_SDL_DispatchGPUCompute_is_marked_unused +#ifdef SDL_DispatchGPUComputeIndirect +#undef SDL_DispatchGPUComputeIndirect +#endif // SDL_DispatchGPUComputeIndirect +#define SDL_DispatchGPUComputeIndirect SDL3_symbol_SDL_DispatchGPUComputeIndirect_is_marked_unused +#ifdef SDL_EndGPUComputePass +#undef SDL_EndGPUComputePass +#endif // SDL_EndGPUComputePass +#define SDL_EndGPUComputePass SDL3_symbol_SDL_EndGPUComputePass_is_marked_unused +#ifdef SDL_MapGPUTransferBuffer +#undef SDL_MapGPUTransferBuffer +#endif // SDL_MapGPUTransferBuffer +#define SDL_MapGPUTransferBuffer SDL3.SDL_MapGPUTransferBuffer_symbol +#ifdef SDL_UnmapGPUTransferBuffer +#undef SDL_UnmapGPUTransferBuffer +#endif // SDL_UnmapGPUTransferBuffer +#define SDL_UnmapGPUTransferBuffer SDL3.SDL_UnmapGPUTransferBuffer_symbol +#ifdef SDL_BeginGPUCopyPass +#undef SDL_BeginGPUCopyPass +#endif // SDL_BeginGPUCopyPass +#define SDL_BeginGPUCopyPass SDL3.SDL_BeginGPUCopyPass_symbol +#ifdef SDL_UploadToGPUTexture +#undef SDL_UploadToGPUTexture +#endif // SDL_UploadToGPUTexture +#define SDL_UploadToGPUTexture SDL3.SDL_UploadToGPUTexture_symbol +#ifdef SDL_UploadToGPUBuffer +#undef SDL_UploadToGPUBuffer +#endif // SDL_UploadToGPUBuffer +#define SDL_UploadToGPUBuffer SDL3.SDL_UploadToGPUBuffer_symbol +#ifdef SDL_CopyGPUTextureToTexture +#undef SDL_CopyGPUTextureToTexture +#endif // SDL_CopyGPUTextureToTexture +#define SDL_CopyGPUTextureToTexture SDL3_symbol_SDL_CopyGPUTextureToTexture_is_marked_unused +#ifdef SDL_CopyGPUBufferToBuffer +#undef SDL_CopyGPUBufferToBuffer +#endif // SDL_CopyGPUBufferToBuffer +#define SDL_CopyGPUBufferToBuffer SDL3_symbol_SDL_CopyGPUBufferToBuffer_is_marked_unused +#ifdef SDL_DownloadFromGPUTexture +#undef SDL_DownloadFromGPUTexture +#endif // SDL_DownloadFromGPUTexture +#define SDL_DownloadFromGPUTexture SDL3.SDL_DownloadFromGPUTexture_symbol +#ifdef SDL_DownloadFromGPUBuffer +#undef SDL_DownloadFromGPUBuffer +#endif // SDL_DownloadFromGPUBuffer +#define SDL_DownloadFromGPUBuffer SDL3_symbol_SDL_DownloadFromGPUBuffer_is_marked_unused +#ifdef SDL_EndGPUCopyPass +#undef SDL_EndGPUCopyPass +#endif // SDL_EndGPUCopyPass +#define SDL_EndGPUCopyPass SDL3.SDL_EndGPUCopyPass_symbol +#ifdef SDL_GenerateMipmapsForGPUTexture +#undef SDL_GenerateMipmapsForGPUTexture +#endif // SDL_GenerateMipmapsForGPUTexture +#define SDL_GenerateMipmapsForGPUTexture SDL3_symbol_SDL_GenerateMipmapsForGPUTexture_is_marked_unused +#ifdef SDL_BlitGPUTexture +#undef SDL_BlitGPUTexture +#endif // SDL_BlitGPUTexture +#define SDL_BlitGPUTexture SDL3.SDL_BlitGPUTexture_symbol +#ifdef SDL_WindowSupportsGPUSwapchainComposition +#undef SDL_WindowSupportsGPUSwapchainComposition +#endif // SDL_WindowSupportsGPUSwapchainComposition +#define SDL_WindowSupportsGPUSwapchainComposition SDL3_symbol_SDL_WindowSupportsGPUSwapchainComposition_is_marked_unused +#ifdef SDL_WindowSupportsGPUPresentMode +#undef SDL_WindowSupportsGPUPresentMode +#endif // SDL_WindowSupportsGPUPresentMode +#define SDL_WindowSupportsGPUPresentMode SDL3_symbol_SDL_WindowSupportsGPUPresentMode_is_marked_unused +#ifdef SDL_ClaimWindowForGPUDevice +#undef SDL_ClaimWindowForGPUDevice +#endif // SDL_ClaimWindowForGPUDevice +#define SDL_ClaimWindowForGPUDevice SDL3.SDL_ClaimWindowForGPUDevice_symbol +#ifdef SDL_ReleaseWindowFromGPUDevice +#undef SDL_ReleaseWindowFromGPUDevice +#endif // SDL_ReleaseWindowFromGPUDevice +#define SDL_ReleaseWindowFromGPUDevice SDL3.SDL_ReleaseWindowFromGPUDevice_symbol +#ifdef SDL_SetGPUSwapchainParameters +#undef SDL_SetGPUSwapchainParameters +#endif // SDL_SetGPUSwapchainParameters +#define SDL_SetGPUSwapchainParameters SDL3_symbol_SDL_SetGPUSwapchainParameters_is_marked_unused +#ifdef SDL_SetGPUAllowedFramesInFlight +#undef SDL_SetGPUAllowedFramesInFlight +#endif // SDL_SetGPUAllowedFramesInFlight +#define SDL_SetGPUAllowedFramesInFlight SDL3_symbol_SDL_SetGPUAllowedFramesInFlight_is_marked_unused +#ifdef SDL_GetGPUSwapchainTextureFormat +#undef SDL_GetGPUSwapchainTextureFormat +#endif // SDL_GetGPUSwapchainTextureFormat +#define SDL_GetGPUSwapchainTextureFormat SDL3.SDL_GetGPUSwapchainTextureFormat_symbol +#ifdef SDL_AcquireGPUSwapchainTexture +#undef SDL_AcquireGPUSwapchainTexture +#endif // SDL_AcquireGPUSwapchainTexture +#define SDL_AcquireGPUSwapchainTexture SDL3_symbol_SDL_AcquireGPUSwapchainTexture_is_marked_unused +#ifdef SDL_WaitForGPUSwapchain +#undef SDL_WaitForGPUSwapchain +#endif // SDL_WaitForGPUSwapchain +#define SDL_WaitForGPUSwapchain SDL3_symbol_SDL_WaitForGPUSwapchain_is_marked_unused +#ifdef SDL_WaitAndAcquireGPUSwapchainTexture +#undef SDL_WaitAndAcquireGPUSwapchainTexture +#endif // SDL_WaitAndAcquireGPUSwapchainTexture +#define SDL_WaitAndAcquireGPUSwapchainTexture SDL3.SDL_WaitAndAcquireGPUSwapchainTexture_symbol +#ifdef SDL_SubmitGPUCommandBuffer +#undef SDL_SubmitGPUCommandBuffer +#endif // SDL_SubmitGPUCommandBuffer +#define SDL_SubmitGPUCommandBuffer SDL3.SDL_SubmitGPUCommandBuffer_symbol +#ifdef SDL_SubmitGPUCommandBufferAndAcquireFence +#undef SDL_SubmitGPUCommandBufferAndAcquireFence +#endif // SDL_SubmitGPUCommandBufferAndAcquireFence +#define SDL_SubmitGPUCommandBufferAndAcquireFence SDL3.SDL_SubmitGPUCommandBufferAndAcquireFence_symbol +#ifdef SDL_CancelGPUCommandBuffer +#undef SDL_CancelGPUCommandBuffer +#endif // SDL_CancelGPUCommandBuffer +#define SDL_CancelGPUCommandBuffer SDL3.SDL_CancelGPUCommandBuffer_symbol +#ifdef SDL_WaitForGPUIdle +#undef SDL_WaitForGPUIdle +#endif // SDL_WaitForGPUIdle +#define SDL_WaitForGPUIdle SDL3_symbol_SDL_WaitForGPUIdle_is_marked_unused +#ifdef SDL_WaitForGPUFences +#undef SDL_WaitForGPUFences +#endif // SDL_WaitForGPUFences +#define SDL_WaitForGPUFences SDL3.SDL_WaitForGPUFences_symbol +#ifdef SDL_QueryGPUFence +#undef SDL_QueryGPUFence +#endif // SDL_QueryGPUFence +#define SDL_QueryGPUFence SDL3_symbol_SDL_QueryGPUFence_is_marked_unused +#ifdef SDL_ReleaseGPUFence +#undef SDL_ReleaseGPUFence +#endif // SDL_ReleaseGPUFence +#define SDL_ReleaseGPUFence SDL3.SDL_ReleaseGPUFence_symbol +#ifdef SDL_GPUTextureFormatTexelBlockSize +#undef SDL_GPUTextureFormatTexelBlockSize +#endif // SDL_GPUTextureFormatTexelBlockSize +#define SDL_GPUTextureFormatTexelBlockSize SDL3_symbol_SDL_GPUTextureFormatTexelBlockSize_is_marked_unused +#ifdef SDL_GPUTextureSupportsFormat +#undef SDL_GPUTextureSupportsFormat +#endif // SDL_GPUTextureSupportsFormat +#define SDL_GPUTextureSupportsFormat SDL3_symbol_SDL_GPUTextureSupportsFormat_is_marked_unused +#ifdef SDL_GPUTextureSupportsSampleCount +#undef SDL_GPUTextureSupportsSampleCount +#endif // SDL_GPUTextureSupportsSampleCount +#define SDL_GPUTextureSupportsSampleCount SDL3_symbol_SDL_GPUTextureSupportsSampleCount_is_marked_unused +#ifdef SDL_CalculateGPUTextureFormatSize +#undef SDL_CalculateGPUTextureFormatSize +#endif // SDL_CalculateGPUTextureFormatSize +#define SDL_CalculateGPUTextureFormatSize SDL3_symbol_SDL_CalculateGPUTextureFormatSize_is_marked_unused +#ifdef SDL_GetPixelFormatFromGPUTextureFormat +#undef SDL_GetPixelFormatFromGPUTextureFormat +#endif // SDL_GetPixelFormatFromGPUTextureFormat +#define SDL_GetPixelFormatFromGPUTextureFormat SDL3_symbol_SDL_GetPixelFormatFromGPUTextureFormat_is_marked_unused +#ifdef SDL_GetGPUTextureFormatFromPixelFormat +#undef SDL_GetGPUTextureFormatFromPixelFormat +#endif // SDL_GetGPUTextureFormatFromPixelFormat +#define SDL_GetGPUTextureFormatFromPixelFormat SDL3_symbol_SDL_GetGPUTextureFormatFromPixelFormat_is_marked_unused +#ifdef SDL_GDKSuspendGPU +#undef SDL_GDKSuspendGPU +#endif // SDL_GDKSuspendGPU +#define SDL_GDKSuspendGPU SDL3_symbol_SDL_GDKSuspendGPU_is_marked_unused +#ifdef SDL_GDKResumeGPU +#undef SDL_GDKResumeGPU +#endif // SDL_GDKResumeGPU +#define SDL_GDKResumeGPU SDL3_symbol_SDL_GDKResumeGPU_is_marked_unused +#ifdef SDL_GUIDToString +#undef SDL_GUIDToString +#endif // SDL_GUIDToString +#define SDL_GUIDToString SDL3_symbol_SDL_GUIDToString_is_marked_unused +#ifdef SDL_StringToGUID +#undef SDL_StringToGUID +#endif // SDL_StringToGUID +#define SDL_StringToGUID SDL3_symbol_SDL_StringToGUID_is_marked_unused +#ifdef SDL_GetHaptics +#undef SDL_GetHaptics +#endif // SDL_GetHaptics +#define SDL_GetHaptics SDL3.SDL_GetHaptics_symbol +#ifdef SDL_GetHapticNameForID +#undef SDL_GetHapticNameForID +#endif // SDL_GetHapticNameForID +#define SDL_GetHapticNameForID SDL3_symbol_SDL_GetHapticNameForID_is_marked_unused +#ifdef SDL_OpenHaptic +#undef SDL_OpenHaptic +#endif // SDL_OpenHaptic +#define SDL_OpenHaptic SDL3.SDL_OpenHaptic_symbol +#ifdef SDL_GetHapticFromID +#undef SDL_GetHapticFromID +#endif // SDL_GetHapticFromID +#define SDL_GetHapticFromID SDL3_symbol_SDL_GetHapticFromID_is_marked_unused +#ifdef SDL_GetHapticID +#undef SDL_GetHapticID +#endif // SDL_GetHapticID +#define SDL_GetHapticID SDL3.SDL_GetHapticID_symbol +#ifdef SDL_GetHapticName +#undef SDL_GetHapticName +#endif // SDL_GetHapticName +#define SDL_GetHapticName SDL3_symbol_SDL_GetHapticName_is_marked_unused +#ifdef SDL_IsMouseHaptic +#undef SDL_IsMouseHaptic +#endif // SDL_IsMouseHaptic +#define SDL_IsMouseHaptic SDL3_symbol_SDL_IsMouseHaptic_is_marked_unused +#ifdef SDL_OpenHapticFromMouse +#undef SDL_OpenHapticFromMouse +#endif // SDL_OpenHapticFromMouse +#define SDL_OpenHapticFromMouse SDL3.SDL_OpenHapticFromMouse_symbol +#ifdef SDL_IsJoystickHaptic +#undef SDL_IsJoystickHaptic +#endif // SDL_IsJoystickHaptic +#define SDL_IsJoystickHaptic SDL3_symbol_SDL_IsJoystickHaptic_is_marked_unused +#ifdef SDL_OpenHapticFromJoystick +#undef SDL_OpenHapticFromJoystick +#endif // SDL_OpenHapticFromJoystick +#define SDL_OpenHapticFromJoystick SDL3.SDL_OpenHapticFromJoystick_symbol +#ifdef SDL_CloseHaptic +#undef SDL_CloseHaptic +#endif // SDL_CloseHaptic +#define SDL_CloseHaptic SDL3.SDL_CloseHaptic_symbol +#ifdef SDL_GetMaxHapticEffects +#undef SDL_GetMaxHapticEffects +#endif // SDL_GetMaxHapticEffects +#define SDL_GetMaxHapticEffects SDL3_symbol_SDL_GetMaxHapticEffects_is_marked_unused +#ifdef SDL_GetMaxHapticEffectsPlaying +#undef SDL_GetMaxHapticEffectsPlaying +#endif // SDL_GetMaxHapticEffectsPlaying +#define SDL_GetMaxHapticEffectsPlaying SDL3_symbol_SDL_GetMaxHapticEffectsPlaying_is_marked_unused +#ifdef SDL_GetHapticFeatures +#undef SDL_GetHapticFeatures +#endif // SDL_GetHapticFeatures +#define SDL_GetHapticFeatures SDL3_symbol_SDL_GetHapticFeatures_is_marked_unused +#ifdef SDL_GetNumHapticAxes +#undef SDL_GetNumHapticAxes +#endif // SDL_GetNumHapticAxes +#define SDL_GetNumHapticAxes SDL3_symbol_SDL_GetNumHapticAxes_is_marked_unused +#ifdef SDL_HapticEffectSupported +#undef SDL_HapticEffectSupported +#endif // SDL_HapticEffectSupported +#define SDL_HapticEffectSupported SDL3_symbol_SDL_HapticEffectSupported_is_marked_unused +#ifdef SDL_CreateHapticEffect +#undef SDL_CreateHapticEffect +#endif // SDL_CreateHapticEffect +#define SDL_CreateHapticEffect SDL3_symbol_SDL_CreateHapticEffect_is_marked_unused +#ifdef SDL_UpdateHapticEffect +#undef SDL_UpdateHapticEffect +#endif // SDL_UpdateHapticEffect +#define SDL_UpdateHapticEffect SDL3_symbol_SDL_UpdateHapticEffect_is_marked_unused +#ifdef SDL_RunHapticEffect +#undef SDL_RunHapticEffect +#endif // SDL_RunHapticEffect +#define SDL_RunHapticEffect SDL3_symbol_SDL_RunHapticEffect_is_marked_unused +#ifdef SDL_StopHapticEffect +#undef SDL_StopHapticEffect +#endif // SDL_StopHapticEffect +#define SDL_StopHapticEffect SDL3_symbol_SDL_StopHapticEffect_is_marked_unused +#ifdef SDL_DestroyHapticEffect +#undef SDL_DestroyHapticEffect +#endif // SDL_DestroyHapticEffect +#define SDL_DestroyHapticEffect SDL3_symbol_SDL_DestroyHapticEffect_is_marked_unused +#ifdef SDL_GetHapticEffectStatus +#undef SDL_GetHapticEffectStatus +#endif // SDL_GetHapticEffectStatus +#define SDL_GetHapticEffectStatus SDL3_symbol_SDL_GetHapticEffectStatus_is_marked_unused +#ifdef SDL_SetHapticGain +#undef SDL_SetHapticGain +#endif // SDL_SetHapticGain +#define SDL_SetHapticGain SDL3_symbol_SDL_SetHapticGain_is_marked_unused +#ifdef SDL_SetHapticAutocenter +#undef SDL_SetHapticAutocenter +#endif // SDL_SetHapticAutocenter +#define SDL_SetHapticAutocenter SDL3_symbol_SDL_SetHapticAutocenter_is_marked_unused +#ifdef SDL_PauseHaptic +#undef SDL_PauseHaptic +#endif // SDL_PauseHaptic +#define SDL_PauseHaptic SDL3_symbol_SDL_PauseHaptic_is_marked_unused +#ifdef SDL_ResumeHaptic +#undef SDL_ResumeHaptic +#endif // SDL_ResumeHaptic +#define SDL_ResumeHaptic SDL3_symbol_SDL_ResumeHaptic_is_marked_unused +#ifdef SDL_StopHapticEffects +#undef SDL_StopHapticEffects +#endif // SDL_StopHapticEffects +#define SDL_StopHapticEffects SDL3_symbol_SDL_StopHapticEffects_is_marked_unused +#ifdef SDL_HapticRumbleSupported +#undef SDL_HapticRumbleSupported +#endif // SDL_HapticRumbleSupported +#define SDL_HapticRumbleSupported SDL3_symbol_SDL_HapticRumbleSupported_is_marked_unused +#ifdef SDL_InitHapticRumble +#undef SDL_InitHapticRumble +#endif // SDL_InitHapticRumble +#define SDL_InitHapticRumble SDL3.SDL_InitHapticRumble_symbol +#ifdef SDL_PlayHapticRumble +#undef SDL_PlayHapticRumble +#endif // SDL_PlayHapticRumble +#define SDL_PlayHapticRumble SDL3.SDL_PlayHapticRumble_symbol +#ifdef SDL_StopHapticRumble +#undef SDL_StopHapticRumble +#endif // SDL_StopHapticRumble +#define SDL_StopHapticRumble SDL3_symbol_SDL_StopHapticRumble_is_marked_unused +#ifdef SDL_hid_init +#undef SDL_hid_init +#endif // SDL_hid_init +#define SDL_hid_init SDL3_symbol_SDL_hid_init_is_marked_unused +#ifdef SDL_hid_exit +#undef SDL_hid_exit +#endif // SDL_hid_exit +#define SDL_hid_exit SDL3_symbol_SDL_hid_exit_is_marked_unused +#ifdef SDL_hid_device_change_count +#undef SDL_hid_device_change_count +#endif // SDL_hid_device_change_count +#define SDL_hid_device_change_count SDL3_symbol_SDL_hid_device_change_count_is_marked_unused +#ifdef SDL_hid_enumerate +#undef SDL_hid_enumerate +#endif // SDL_hid_enumerate +#define SDL_hid_enumerate SDL3_symbol_SDL_hid_enumerate_is_marked_unused +#ifdef SDL_hid_free_enumeration +#undef SDL_hid_free_enumeration +#endif // SDL_hid_free_enumeration +#define SDL_hid_free_enumeration SDL3_symbol_SDL_hid_free_enumeration_is_marked_unused +#ifdef SDL_hid_open +#undef SDL_hid_open +#endif // SDL_hid_open +#define SDL_hid_open SDL3_symbol_SDL_hid_open_is_marked_unused +#ifdef SDL_hid_open_path +#undef SDL_hid_open_path +#endif // SDL_hid_open_path +#define SDL_hid_open_path SDL3_symbol_SDL_hid_open_path_is_marked_unused +#ifdef SDL_hid_get_properties +#undef SDL_hid_get_properties +#endif // SDL_hid_get_properties +#define SDL_hid_get_properties SDL3_symbol_SDL_hid_get_properties_is_marked_unused +#ifdef SDL_hid_write +#undef SDL_hid_write +#endif // SDL_hid_write +#define SDL_hid_write SDL3_symbol_SDL_hid_write_is_marked_unused +#ifdef SDL_hid_read_timeout +#undef SDL_hid_read_timeout +#endif // SDL_hid_read_timeout +#define SDL_hid_read_timeout SDL3_symbol_SDL_hid_read_timeout_is_marked_unused +#ifdef SDL_hid_read +#undef SDL_hid_read +#endif // SDL_hid_read +#define SDL_hid_read SDL3_symbol_SDL_hid_read_is_marked_unused +#ifdef SDL_hid_set_nonblocking +#undef SDL_hid_set_nonblocking +#endif // SDL_hid_set_nonblocking +#define SDL_hid_set_nonblocking SDL3_symbol_SDL_hid_set_nonblocking_is_marked_unused +#ifdef SDL_hid_send_feature_report +#undef SDL_hid_send_feature_report +#endif // SDL_hid_send_feature_report +#define SDL_hid_send_feature_report SDL3_symbol_SDL_hid_send_feature_report_is_marked_unused +#ifdef SDL_hid_get_feature_report +#undef SDL_hid_get_feature_report +#endif // SDL_hid_get_feature_report +#define SDL_hid_get_feature_report SDL3_symbol_SDL_hid_get_feature_report_is_marked_unused +#ifdef SDL_hid_get_input_report +#undef SDL_hid_get_input_report +#endif // SDL_hid_get_input_report +#define SDL_hid_get_input_report SDL3_symbol_SDL_hid_get_input_report_is_marked_unused +#ifdef SDL_hid_close +#undef SDL_hid_close +#endif // SDL_hid_close +#define SDL_hid_close SDL3_symbol_SDL_hid_close_is_marked_unused +#ifdef SDL_hid_get_manufacturer_string +#undef SDL_hid_get_manufacturer_string +#endif // SDL_hid_get_manufacturer_string +#define SDL_hid_get_manufacturer_string SDL3_symbol_SDL_hid_get_manufacturer_string_is_marked_unused +#ifdef SDL_hid_get_product_string +#undef SDL_hid_get_product_string +#endif // SDL_hid_get_product_string +#define SDL_hid_get_product_string SDL3_symbol_SDL_hid_get_product_string_is_marked_unused +#ifdef SDL_hid_get_serial_number_string +#undef SDL_hid_get_serial_number_string +#endif // SDL_hid_get_serial_number_string +#define SDL_hid_get_serial_number_string SDL3_symbol_SDL_hid_get_serial_number_string_is_marked_unused +#ifdef SDL_hid_get_indexed_string +#undef SDL_hid_get_indexed_string +#endif // SDL_hid_get_indexed_string +#define SDL_hid_get_indexed_string SDL3_symbol_SDL_hid_get_indexed_string_is_marked_unused +#ifdef SDL_hid_get_device_info +#undef SDL_hid_get_device_info +#endif // SDL_hid_get_device_info +#define SDL_hid_get_device_info SDL3_symbol_SDL_hid_get_device_info_is_marked_unused +#ifdef SDL_hid_get_report_descriptor +#undef SDL_hid_get_report_descriptor +#endif // SDL_hid_get_report_descriptor +#define SDL_hid_get_report_descriptor SDL3_symbol_SDL_hid_get_report_descriptor_is_marked_unused +#ifdef SDL_hid_ble_scan +#undef SDL_hid_ble_scan +#endif // SDL_hid_ble_scan +#define SDL_hid_ble_scan SDL3_symbol_SDL_hid_ble_scan_is_marked_unused +#ifdef SDL_SetHintWithPriority +#undef SDL_SetHintWithPriority +#endif // SDL_SetHintWithPriority +#define SDL_SetHintWithPriority SDL3_symbol_SDL_SetHintWithPriority_is_marked_unused +#ifdef SDL_SetHint +#undef SDL_SetHint +#endif // SDL_SetHint +#define SDL_SetHint SDL3.SDL_SetHint_symbol +#ifdef SDL_ResetHint +#undef SDL_ResetHint +#endif // SDL_ResetHint +#define SDL_ResetHint SDL3_symbol_SDL_ResetHint_is_marked_unused +#ifdef SDL_ResetHints +#undef SDL_ResetHints +#endif // SDL_ResetHints +#define SDL_ResetHints SDL3_symbol_SDL_ResetHints_is_marked_unused +#ifdef SDL_GetHint +#undef SDL_GetHint +#endif // SDL_GetHint +#define SDL_GetHint SDL3_symbol_SDL_GetHint_is_marked_unused +#ifdef SDL_GetHintBoolean +#undef SDL_GetHintBoolean +#endif // SDL_GetHintBoolean +#define SDL_GetHintBoolean SDL3_symbol_SDL_GetHintBoolean_is_marked_unused +#ifdef SDL_AddHintCallback +#undef SDL_AddHintCallback +#endif // SDL_AddHintCallback +#define SDL_AddHintCallback SDL3_symbol_SDL_AddHintCallback_is_marked_unused +#ifdef SDL_RemoveHintCallback +#undef SDL_RemoveHintCallback +#endif // SDL_RemoveHintCallback +#define SDL_RemoveHintCallback SDL3_symbol_SDL_RemoveHintCallback_is_marked_unused +#ifdef SDL_Init +#undef SDL_Init +#endif // SDL_Init +#define SDL_Init SDL3.SDL_Init_symbol +#ifdef SDL_InitSubSystem +#undef SDL_InitSubSystem +#endif // SDL_InitSubSystem +#define SDL_InitSubSystem SDL3_symbol_SDL_InitSubSystem_is_marked_unused +#ifdef SDL_QuitSubSystem +#undef SDL_QuitSubSystem +#endif // SDL_QuitSubSystem +#define SDL_QuitSubSystem SDL3_symbol_SDL_QuitSubSystem_is_marked_unused +#ifdef SDL_WasInit +#undef SDL_WasInit +#endif // SDL_WasInit +#define SDL_WasInit SDL3_symbol_SDL_WasInit_is_marked_unused +#ifdef SDL_Quit +#undef SDL_Quit +#endif // SDL_Quit +#define SDL_Quit SDL3.SDL_Quit_symbol +#ifdef SDL_IsMainThread +#undef SDL_IsMainThread +#endif // SDL_IsMainThread +#define SDL_IsMainThread SDL3_symbol_SDL_IsMainThread_is_marked_unused +#ifdef SDL_RunOnMainThread +#undef SDL_RunOnMainThread +#endif // SDL_RunOnMainThread +#define SDL_RunOnMainThread SDL3_symbol_SDL_RunOnMainThread_is_marked_unused +#ifdef SDL_SetAppMetadata +#undef SDL_SetAppMetadata +#endif // SDL_SetAppMetadata +#define SDL_SetAppMetadata SDL3_symbol_SDL_SetAppMetadata_is_marked_unused +#ifdef SDL_SetAppMetadataProperty +#undef SDL_SetAppMetadataProperty +#endif // SDL_SetAppMetadataProperty +#define SDL_SetAppMetadataProperty SDL3_symbol_SDL_SetAppMetadataProperty_is_marked_unused +#ifdef SDL_GetAppMetadataProperty +#undef SDL_GetAppMetadataProperty +#endif // SDL_GetAppMetadataProperty +#define SDL_GetAppMetadataProperty SDL3_symbol_SDL_GetAppMetadataProperty_is_marked_unused +#ifdef SDL_IOFromFile +#undef SDL_IOFromFile +#endif // SDL_IOFromFile +#define SDL_IOFromFile SDL3.SDL_IOFromFile_symbol +#ifdef SDL_IOFromMem +#undef SDL_IOFromMem +#endif // SDL_IOFromMem +#define SDL_IOFromMem SDL3.SDL_IOFromMem_symbol +#ifdef SDL_IOFromConstMem +#undef SDL_IOFromConstMem +#endif // SDL_IOFromConstMem +#define SDL_IOFromConstMem SDL3_symbol_SDL_IOFromConstMem_is_marked_unused +#ifdef SDL_IOFromDynamicMem +#undef SDL_IOFromDynamicMem +#endif // SDL_IOFromDynamicMem +#define SDL_IOFromDynamicMem SDL3_symbol_SDL_IOFromDynamicMem_is_marked_unused +#ifdef SDL_OpenIO +#undef SDL_OpenIO +#endif // SDL_OpenIO +#define SDL_OpenIO SDL3_symbol_SDL_OpenIO_is_marked_unused +#ifdef SDL_CloseIO +#undef SDL_CloseIO +#endif // SDL_CloseIO +#define SDL_CloseIO SDL3.SDL_CloseIO_symbol +#ifdef SDL_GetIOProperties +#undef SDL_GetIOProperties +#endif // SDL_GetIOProperties +#define SDL_GetIOProperties SDL3_symbol_SDL_GetIOProperties_is_marked_unused +#ifdef SDL_GetIOStatus +#undef SDL_GetIOStatus +#endif // SDL_GetIOStatus +#define SDL_GetIOStatus SDL3.SDL_GetIOStatus_symbol +#ifdef SDL_GetIOSize +#undef SDL_GetIOSize +#endif // SDL_GetIOSize +#define SDL_GetIOSize SDL3.SDL_GetIOSize_symbol +#ifdef SDL_SeekIO +#undef SDL_SeekIO +#endif // SDL_SeekIO +#define SDL_SeekIO SDL3.SDL_SeekIO_symbol +#ifdef SDL_TellIO +#undef SDL_TellIO +#endif // SDL_TellIO +#define SDL_TellIO SDL3.SDL_TellIO_symbol +#ifdef SDL_ReadIO +#undef SDL_ReadIO +#endif // SDL_ReadIO +#define SDL_ReadIO SDL3.SDL_ReadIO_symbol +#ifdef SDL_WriteIO +#undef SDL_WriteIO +#endif // SDL_WriteIO +#define SDL_WriteIO SDL3.SDL_WriteIO_symbol +#ifdef SDL_IOprintf +#undef SDL_IOprintf +#endif // SDL_IOprintf +#define SDL_IOprintf SDL3_symbol_SDL_IOprintf_is_marked_unused +#ifdef SDL_IOvprintf +#undef SDL_IOvprintf +#endif // SDL_IOvprintf +#define SDL_IOvprintf SDL3_symbol_SDL_IOvprintf_is_marked_unused +#ifdef SDL_FlushIO +#undef SDL_FlushIO +#endif // SDL_FlushIO +#define SDL_FlushIO SDL3_symbol_SDL_FlushIO_is_marked_unused +#ifdef SDL_LoadFile_IO +#undef SDL_LoadFile_IO +#endif // SDL_LoadFile_IO +#define SDL_LoadFile_IO SDL3_symbol_SDL_LoadFile_IO_is_marked_unused +#ifdef SDL_LoadFile +#undef SDL_LoadFile +#endif // SDL_LoadFile +#define SDL_LoadFile SDL3.SDL_LoadFile_symbol +#ifdef SDL_SaveFile_IO +#undef SDL_SaveFile_IO +#endif // SDL_SaveFile_IO +#define SDL_SaveFile_IO SDL3_symbol_SDL_SaveFile_IO_is_marked_unused +#ifdef SDL_SaveFile +#undef SDL_SaveFile +#endif // SDL_SaveFile +#define SDL_SaveFile SDL3_symbol_SDL_SaveFile_is_marked_unused +#ifdef SDL_ReadU8 +#undef SDL_ReadU8 +#endif // SDL_ReadU8 +#define SDL_ReadU8 SDL3_symbol_SDL_ReadU8_is_marked_unused +#ifdef SDL_ReadS8 +#undef SDL_ReadS8 +#endif // SDL_ReadS8 +#define SDL_ReadS8 SDL3_symbol_SDL_ReadS8_is_marked_unused +#ifdef SDL_ReadU16LE +#undef SDL_ReadU16LE +#endif // SDL_ReadU16LE +#define SDL_ReadU16LE SDL3_symbol_SDL_ReadU16LE_is_marked_unused +#ifdef SDL_ReadS16LE +#undef SDL_ReadS16LE +#endif // SDL_ReadS16LE +#define SDL_ReadS16LE SDL3_symbol_SDL_ReadS16LE_is_marked_unused +#ifdef SDL_ReadU16BE +#undef SDL_ReadU16BE +#endif // SDL_ReadU16BE +#define SDL_ReadU16BE SDL3_symbol_SDL_ReadU16BE_is_marked_unused +#ifdef SDL_ReadS16BE +#undef SDL_ReadS16BE +#endif // SDL_ReadS16BE +#define SDL_ReadS16BE SDL3_symbol_SDL_ReadS16BE_is_marked_unused +#ifdef SDL_ReadU32LE +#undef SDL_ReadU32LE +#endif // SDL_ReadU32LE +#define SDL_ReadU32LE SDL3_symbol_SDL_ReadU32LE_is_marked_unused +#ifdef SDL_ReadS32LE +#undef SDL_ReadS32LE +#endif // SDL_ReadS32LE +#define SDL_ReadS32LE SDL3_symbol_SDL_ReadS32LE_is_marked_unused +#ifdef SDL_ReadU32BE +#undef SDL_ReadU32BE +#endif // SDL_ReadU32BE +#define SDL_ReadU32BE SDL3_symbol_SDL_ReadU32BE_is_marked_unused +#ifdef SDL_ReadS32BE +#undef SDL_ReadS32BE +#endif // SDL_ReadS32BE +#define SDL_ReadS32BE SDL3_symbol_SDL_ReadS32BE_is_marked_unused +#ifdef SDL_ReadU64LE +#undef SDL_ReadU64LE +#endif // SDL_ReadU64LE +#define SDL_ReadU64LE SDL3_symbol_SDL_ReadU64LE_is_marked_unused +#ifdef SDL_ReadS64LE +#undef SDL_ReadS64LE +#endif // SDL_ReadS64LE +#define SDL_ReadS64LE SDL3_symbol_SDL_ReadS64LE_is_marked_unused +#ifdef SDL_ReadU64BE +#undef SDL_ReadU64BE +#endif // SDL_ReadU64BE +#define SDL_ReadU64BE SDL3_symbol_SDL_ReadU64BE_is_marked_unused +#ifdef SDL_ReadS64BE +#undef SDL_ReadS64BE +#endif // SDL_ReadS64BE +#define SDL_ReadS64BE SDL3_symbol_SDL_ReadS64BE_is_marked_unused +#ifdef SDL_WriteU8 +#undef SDL_WriteU8 +#endif // SDL_WriteU8 +#define SDL_WriteU8 SDL3_symbol_SDL_WriteU8_is_marked_unused +#ifdef SDL_WriteS8 +#undef SDL_WriteS8 +#endif // SDL_WriteS8 +#define SDL_WriteS8 SDL3_symbol_SDL_WriteS8_is_marked_unused +#ifdef SDL_WriteU16LE +#undef SDL_WriteU16LE +#endif // SDL_WriteU16LE +#define SDL_WriteU16LE SDL3_symbol_SDL_WriteU16LE_is_marked_unused +#ifdef SDL_WriteS16LE +#undef SDL_WriteS16LE +#endif // SDL_WriteS16LE +#define SDL_WriteS16LE SDL3_symbol_SDL_WriteS16LE_is_marked_unused +#ifdef SDL_WriteU16BE +#undef SDL_WriteU16BE +#endif // SDL_WriteU16BE +#define SDL_WriteU16BE SDL3_symbol_SDL_WriteU16BE_is_marked_unused +#ifdef SDL_WriteS16BE +#undef SDL_WriteS16BE +#endif // SDL_WriteS16BE +#define SDL_WriteS16BE SDL3_symbol_SDL_WriteS16BE_is_marked_unused +#ifdef SDL_WriteU32LE +#undef SDL_WriteU32LE +#endif // SDL_WriteU32LE +#define SDL_WriteU32LE SDL3_symbol_SDL_WriteU32LE_is_marked_unused +#ifdef SDL_WriteS32LE +#undef SDL_WriteS32LE +#endif // SDL_WriteS32LE +#define SDL_WriteS32LE SDL3_symbol_SDL_WriteS32LE_is_marked_unused +#ifdef SDL_WriteU32BE +#undef SDL_WriteU32BE +#endif // SDL_WriteU32BE +#define SDL_WriteU32BE SDL3_symbol_SDL_WriteU32BE_is_marked_unused +#ifdef SDL_WriteS32BE +#undef SDL_WriteS32BE +#endif // SDL_WriteS32BE +#define SDL_WriteS32BE SDL3_symbol_SDL_WriteS32BE_is_marked_unused +#ifdef SDL_WriteU64LE +#undef SDL_WriteU64LE +#endif // SDL_WriteU64LE +#define SDL_WriteU64LE SDL3_symbol_SDL_WriteU64LE_is_marked_unused +#ifdef SDL_WriteS64LE +#undef SDL_WriteS64LE +#endif // SDL_WriteS64LE +#define SDL_WriteS64LE SDL3_symbol_SDL_WriteS64LE_is_marked_unused +#ifdef SDL_WriteU64BE +#undef SDL_WriteU64BE +#endif // SDL_WriteU64BE +#define SDL_WriteU64BE SDL3_symbol_SDL_WriteU64BE_is_marked_unused +#ifdef SDL_WriteS64BE +#undef SDL_WriteS64BE +#endif // SDL_WriteS64BE +#define SDL_WriteS64BE SDL3_symbol_SDL_WriteS64BE_is_marked_unused +#ifdef SDL_LockJoysticks +#undef SDL_LockJoysticks +#endif // SDL_LockJoysticks +#define SDL_LockJoysticks SDL3_symbol_SDL_LockJoysticks_is_marked_unused +#ifdef SDL_UnlockJoysticks +#undef SDL_UnlockJoysticks +#endif // SDL_UnlockJoysticks +#define SDL_UnlockJoysticks SDL3_symbol_SDL_UnlockJoysticks_is_marked_unused +#ifdef SDL_HasJoystick +#undef SDL_HasJoystick +#endif // SDL_HasJoystick +#define SDL_HasJoystick SDL3_symbol_SDL_HasJoystick_is_marked_unused +#ifdef SDL_GetJoysticks +#undef SDL_GetJoysticks +#endif // SDL_GetJoysticks +#define SDL_GetJoysticks SDL3_symbol_SDL_GetJoysticks_is_marked_unused +#ifdef SDL_GetJoystickNameForID +#undef SDL_GetJoystickNameForID +#endif // SDL_GetJoystickNameForID +#define SDL_GetJoystickNameForID SDL3.SDL_GetJoystickNameForID_symbol +#ifdef SDL_GetJoystickPathForID +#undef SDL_GetJoystickPathForID +#endif // SDL_GetJoystickPathForID +#define SDL_GetJoystickPathForID SDL3_symbol_SDL_GetJoystickPathForID_is_marked_unused +#ifdef SDL_GetJoystickPlayerIndexForID +#undef SDL_GetJoystickPlayerIndexForID +#endif // SDL_GetJoystickPlayerIndexForID +#define SDL_GetJoystickPlayerIndexForID SDL3_symbol_SDL_GetJoystickPlayerIndexForID_is_marked_unused +#ifdef SDL_GetJoystickGUIDForID +#undef SDL_GetJoystickGUIDForID +#endif // SDL_GetJoystickGUIDForID +#define SDL_GetJoystickGUIDForID SDL3_symbol_SDL_GetJoystickGUIDForID_is_marked_unused +#ifdef SDL_GetJoystickVendorForID +#undef SDL_GetJoystickVendorForID +#endif // SDL_GetJoystickVendorForID +#define SDL_GetJoystickVendorForID SDL3_symbol_SDL_GetJoystickVendorForID_is_marked_unused +#ifdef SDL_GetJoystickProductForID +#undef SDL_GetJoystickProductForID +#endif // SDL_GetJoystickProductForID +#define SDL_GetJoystickProductForID SDL3_symbol_SDL_GetJoystickProductForID_is_marked_unused +#ifdef SDL_GetJoystickProductVersionForID +#undef SDL_GetJoystickProductVersionForID +#endif // SDL_GetJoystickProductVersionForID +#define SDL_GetJoystickProductVersionForID SDL3_symbol_SDL_GetJoystickProductVersionForID_is_marked_unused +#ifdef SDL_GetJoystickTypeForID +#undef SDL_GetJoystickTypeForID +#endif // SDL_GetJoystickTypeForID +#define SDL_GetJoystickTypeForID SDL3_symbol_SDL_GetJoystickTypeForID_is_marked_unused +#ifdef SDL_OpenJoystick +#undef SDL_OpenJoystick +#endif // SDL_OpenJoystick +#define SDL_OpenJoystick SDL3_symbol_SDL_OpenJoystick_is_marked_unused +#ifdef SDL_GetJoystickFromID +#undef SDL_GetJoystickFromID +#endif // SDL_GetJoystickFromID +#define SDL_GetJoystickFromID SDL3_symbol_SDL_GetJoystickFromID_is_marked_unused +#ifdef SDL_GetJoystickFromPlayerIndex +#undef SDL_GetJoystickFromPlayerIndex +#endif // SDL_GetJoystickFromPlayerIndex +#define SDL_GetJoystickFromPlayerIndex SDL3_symbol_SDL_GetJoystickFromPlayerIndex_is_marked_unused +#ifdef SDL_AttachVirtualJoystick +#undef SDL_AttachVirtualJoystick +#endif // SDL_AttachVirtualJoystick +#define SDL_AttachVirtualJoystick SDL3_symbol_SDL_AttachVirtualJoystick_is_marked_unused +#ifdef SDL_DetachVirtualJoystick +#undef SDL_DetachVirtualJoystick +#endif // SDL_DetachVirtualJoystick +#define SDL_DetachVirtualJoystick SDL3_symbol_SDL_DetachVirtualJoystick_is_marked_unused +#ifdef SDL_IsJoystickVirtual +#undef SDL_IsJoystickVirtual +#endif // SDL_IsJoystickVirtual +#define SDL_IsJoystickVirtual SDL3_symbol_SDL_IsJoystickVirtual_is_marked_unused +#ifdef SDL_SetJoystickVirtualAxis +#undef SDL_SetJoystickVirtualAxis +#endif // SDL_SetJoystickVirtualAxis +#define SDL_SetJoystickVirtualAxis SDL3_symbol_SDL_SetJoystickVirtualAxis_is_marked_unused +#ifdef SDL_SetJoystickVirtualBall +#undef SDL_SetJoystickVirtualBall +#endif // SDL_SetJoystickVirtualBall +#define SDL_SetJoystickVirtualBall SDL3_symbol_SDL_SetJoystickVirtualBall_is_marked_unused +#ifdef SDL_SetJoystickVirtualButton +#undef SDL_SetJoystickVirtualButton +#endif // SDL_SetJoystickVirtualButton +#define SDL_SetJoystickVirtualButton SDL3_symbol_SDL_SetJoystickVirtualButton_is_marked_unused +#ifdef SDL_SetJoystickVirtualHat +#undef SDL_SetJoystickVirtualHat +#endif // SDL_SetJoystickVirtualHat +#define SDL_SetJoystickVirtualHat SDL3_symbol_SDL_SetJoystickVirtualHat_is_marked_unused +#ifdef SDL_SetJoystickVirtualTouchpad +#undef SDL_SetJoystickVirtualTouchpad +#endif // SDL_SetJoystickVirtualTouchpad +#define SDL_SetJoystickVirtualTouchpad SDL3_symbol_SDL_SetJoystickVirtualTouchpad_is_marked_unused +#ifdef SDL_SendJoystickVirtualSensorData +#undef SDL_SendJoystickVirtualSensorData +#endif // SDL_SendJoystickVirtualSensorData +#define SDL_SendJoystickVirtualSensorData SDL3_symbol_SDL_SendJoystickVirtualSensorData_is_marked_unused +#ifdef SDL_GetJoystickProperties +#undef SDL_GetJoystickProperties +#endif // SDL_GetJoystickProperties +#define SDL_GetJoystickProperties SDL3_symbol_SDL_GetJoystickProperties_is_marked_unused +#ifdef SDL_GetJoystickName +#undef SDL_GetJoystickName +#endif // SDL_GetJoystickName +#define SDL_GetJoystickName SDL3_symbol_SDL_GetJoystickName_is_marked_unused +#ifdef SDL_GetJoystickPath +#undef SDL_GetJoystickPath +#endif // SDL_GetJoystickPath +#define SDL_GetJoystickPath SDL3_symbol_SDL_GetJoystickPath_is_marked_unused +#ifdef SDL_GetJoystickPlayerIndex +#undef SDL_GetJoystickPlayerIndex +#endif // SDL_GetJoystickPlayerIndex +#define SDL_GetJoystickPlayerIndex SDL3_symbol_SDL_GetJoystickPlayerIndex_is_marked_unused +#ifdef SDL_SetJoystickPlayerIndex +#undef SDL_SetJoystickPlayerIndex +#endif // SDL_SetJoystickPlayerIndex +#define SDL_SetJoystickPlayerIndex SDL3_symbol_SDL_SetJoystickPlayerIndex_is_marked_unused +#ifdef SDL_GetJoystickGUID +#undef SDL_GetJoystickGUID +#endif // SDL_GetJoystickGUID +#define SDL_GetJoystickGUID SDL3_symbol_SDL_GetJoystickGUID_is_marked_unused +#ifdef SDL_GetJoystickVendor +#undef SDL_GetJoystickVendor +#endif // SDL_GetJoystickVendor +#define SDL_GetJoystickVendor SDL3_symbol_SDL_GetJoystickVendor_is_marked_unused +#ifdef SDL_GetJoystickProduct +#undef SDL_GetJoystickProduct +#endif // SDL_GetJoystickProduct +#define SDL_GetJoystickProduct SDL3_symbol_SDL_GetJoystickProduct_is_marked_unused +#ifdef SDL_GetJoystickProductVersion +#undef SDL_GetJoystickProductVersion +#endif // SDL_GetJoystickProductVersion +#define SDL_GetJoystickProductVersion SDL3_symbol_SDL_GetJoystickProductVersion_is_marked_unused +#ifdef SDL_GetJoystickFirmwareVersion +#undef SDL_GetJoystickFirmwareVersion +#endif // SDL_GetJoystickFirmwareVersion +#define SDL_GetJoystickFirmwareVersion SDL3_symbol_SDL_GetJoystickFirmwareVersion_is_marked_unused +#ifdef SDL_GetJoystickSerial +#undef SDL_GetJoystickSerial +#endif // SDL_GetJoystickSerial +#define SDL_GetJoystickSerial SDL3_symbol_SDL_GetJoystickSerial_is_marked_unused +#ifdef SDL_GetJoystickType +#undef SDL_GetJoystickType +#endif // SDL_GetJoystickType +#define SDL_GetJoystickType SDL3_symbol_SDL_GetJoystickType_is_marked_unused +#ifdef SDL_GetJoystickGUIDInfo +#undef SDL_GetJoystickGUIDInfo +#endif // SDL_GetJoystickGUIDInfo +#define SDL_GetJoystickGUIDInfo SDL3_symbol_SDL_GetJoystickGUIDInfo_is_marked_unused +#ifdef SDL_JoystickConnected +#undef SDL_JoystickConnected +#endif // SDL_JoystickConnected +#define SDL_JoystickConnected SDL3_symbol_SDL_JoystickConnected_is_marked_unused +#ifdef SDL_GetJoystickID +#undef SDL_GetJoystickID +#endif // SDL_GetJoystickID +#define SDL_GetJoystickID SDL3_symbol_SDL_GetJoystickID_is_marked_unused +#ifdef SDL_GetNumJoystickAxes +#undef SDL_GetNumJoystickAxes +#endif // SDL_GetNumJoystickAxes +#define SDL_GetNumJoystickAxes SDL3_symbol_SDL_GetNumJoystickAxes_is_marked_unused +#ifdef SDL_GetNumJoystickBalls +#undef SDL_GetNumJoystickBalls +#endif // SDL_GetNumJoystickBalls +#define SDL_GetNumJoystickBalls SDL3_symbol_SDL_GetNumJoystickBalls_is_marked_unused +#ifdef SDL_GetNumJoystickHats +#undef SDL_GetNumJoystickHats +#endif // SDL_GetNumJoystickHats +#define SDL_GetNumJoystickHats SDL3_symbol_SDL_GetNumJoystickHats_is_marked_unused +#ifdef SDL_GetNumJoystickButtons +#undef SDL_GetNumJoystickButtons +#endif // SDL_GetNumJoystickButtons +#define SDL_GetNumJoystickButtons SDL3_symbol_SDL_GetNumJoystickButtons_is_marked_unused +#ifdef SDL_SetJoystickEventsEnabled +#undef SDL_SetJoystickEventsEnabled +#endif // SDL_SetJoystickEventsEnabled +#define SDL_SetJoystickEventsEnabled SDL3_symbol_SDL_SetJoystickEventsEnabled_is_marked_unused +#ifdef SDL_JoystickEventsEnabled +#undef SDL_JoystickEventsEnabled +#endif // SDL_JoystickEventsEnabled +#define SDL_JoystickEventsEnabled SDL3_symbol_SDL_JoystickEventsEnabled_is_marked_unused +#ifdef SDL_UpdateJoysticks +#undef SDL_UpdateJoysticks +#endif // SDL_UpdateJoysticks +#define SDL_UpdateJoysticks SDL3_symbol_SDL_UpdateJoysticks_is_marked_unused +#ifdef SDL_GetJoystickAxis +#undef SDL_GetJoystickAxis +#endif // SDL_GetJoystickAxis +#define SDL_GetJoystickAxis SDL3_symbol_SDL_GetJoystickAxis_is_marked_unused +#ifdef SDL_GetJoystickAxisInitialState +#undef SDL_GetJoystickAxisInitialState +#endif // SDL_GetJoystickAxisInitialState +#define SDL_GetJoystickAxisInitialState SDL3_symbol_SDL_GetJoystickAxisInitialState_is_marked_unused +#ifdef SDL_GetJoystickBall +#undef SDL_GetJoystickBall +#endif // SDL_GetJoystickBall +#define SDL_GetJoystickBall SDL3_symbol_SDL_GetJoystickBall_is_marked_unused +#ifdef SDL_GetJoystickHat +#undef SDL_GetJoystickHat +#endif // SDL_GetJoystickHat +#define SDL_GetJoystickHat SDL3_symbol_SDL_GetJoystickHat_is_marked_unused +#ifdef SDL_GetJoystickButton +#undef SDL_GetJoystickButton +#endif // SDL_GetJoystickButton +#define SDL_GetJoystickButton SDL3_symbol_SDL_GetJoystickButton_is_marked_unused +#ifdef SDL_RumbleJoystick +#undef SDL_RumbleJoystick +#endif // SDL_RumbleJoystick +#define SDL_RumbleJoystick SDL3_symbol_SDL_RumbleJoystick_is_marked_unused +#ifdef SDL_RumbleJoystickTriggers +#undef SDL_RumbleJoystickTriggers +#endif // SDL_RumbleJoystickTriggers +#define SDL_RumbleJoystickTriggers SDL3_symbol_SDL_RumbleJoystickTriggers_is_marked_unused +#ifdef SDL_SetJoystickLED +#undef SDL_SetJoystickLED +#endif // SDL_SetJoystickLED +#define SDL_SetJoystickLED SDL3_symbol_SDL_SetJoystickLED_is_marked_unused +#ifdef SDL_SendJoystickEffect +#undef SDL_SendJoystickEffect +#endif // SDL_SendJoystickEffect +#define SDL_SendJoystickEffect SDL3_symbol_SDL_SendJoystickEffect_is_marked_unused +#ifdef SDL_CloseJoystick +#undef SDL_CloseJoystick +#endif // SDL_CloseJoystick +#define SDL_CloseJoystick SDL3_symbol_SDL_CloseJoystick_is_marked_unused +#ifdef SDL_GetJoystickConnectionState +#undef SDL_GetJoystickConnectionState +#endif // SDL_GetJoystickConnectionState +#define SDL_GetJoystickConnectionState SDL3_symbol_SDL_GetJoystickConnectionState_is_marked_unused +#ifdef SDL_GetJoystickPowerInfo +#undef SDL_GetJoystickPowerInfo +#endif // SDL_GetJoystickPowerInfo +#define SDL_GetJoystickPowerInfo SDL3_symbol_SDL_GetJoystickPowerInfo_is_marked_unused +#ifdef SDL_HasKeyboard +#undef SDL_HasKeyboard +#endif // SDL_HasKeyboard +#define SDL_HasKeyboard SDL3_symbol_SDL_HasKeyboard_is_marked_unused +#ifdef SDL_GetKeyboards +#undef SDL_GetKeyboards +#endif // SDL_GetKeyboards +#define SDL_GetKeyboards SDL3_symbol_SDL_GetKeyboards_is_marked_unused +#ifdef SDL_GetKeyboardNameForID +#undef SDL_GetKeyboardNameForID +#endif // SDL_GetKeyboardNameForID +#define SDL_GetKeyboardNameForID SDL3_symbol_SDL_GetKeyboardNameForID_is_marked_unused +#ifdef SDL_GetKeyboardFocus +#undef SDL_GetKeyboardFocus +#endif // SDL_GetKeyboardFocus +#define SDL_GetKeyboardFocus SDL3_symbol_SDL_GetKeyboardFocus_is_marked_unused +#ifdef SDL_GetKeyboardState +#undef SDL_GetKeyboardState +#endif // SDL_GetKeyboardState +#define SDL_GetKeyboardState SDL3.SDL_GetKeyboardState_symbol +#ifdef SDL_ResetKeyboard +#undef SDL_ResetKeyboard +#endif // SDL_ResetKeyboard +#define SDL_ResetKeyboard SDL3_symbol_SDL_ResetKeyboard_is_marked_unused +#ifdef SDL_GetModState +#undef SDL_GetModState +#endif // SDL_GetModState +#define SDL_GetModState SDL3_symbol_SDL_GetModState_is_marked_unused +#ifdef SDL_SetModState +#undef SDL_SetModState +#endif // SDL_SetModState +#define SDL_SetModState SDL3_symbol_SDL_SetModState_is_marked_unused +#ifdef SDL_GetKeyFromScancode +#undef SDL_GetKeyFromScancode +#endif // SDL_GetKeyFromScancode +#define SDL_GetKeyFromScancode SDL3_symbol_SDL_GetKeyFromScancode_is_marked_unused +#ifdef SDL_GetScancodeFromKey +#undef SDL_GetScancodeFromKey +#endif // SDL_GetScancodeFromKey +#define SDL_GetScancodeFromKey SDL3_symbol_SDL_GetScancodeFromKey_is_marked_unused +#ifdef SDL_SetScancodeName +#undef SDL_SetScancodeName +#endif // SDL_SetScancodeName +#define SDL_SetScancodeName SDL3_symbol_SDL_SetScancodeName_is_marked_unused +#ifdef SDL_GetScancodeName +#undef SDL_GetScancodeName +#endif // SDL_GetScancodeName +#define SDL_GetScancodeName SDL3_symbol_SDL_GetScancodeName_is_marked_unused +#ifdef SDL_GetScancodeFromName +#undef SDL_GetScancodeFromName +#endif // SDL_GetScancodeFromName +#define SDL_GetScancodeFromName SDL3_symbol_SDL_GetScancodeFromName_is_marked_unused +#ifdef SDL_GetKeyName +#undef SDL_GetKeyName +#endif // SDL_GetKeyName +#define SDL_GetKeyName SDL3_symbol_SDL_GetKeyName_is_marked_unused +#ifdef SDL_GetKeyFromName +#undef SDL_GetKeyFromName +#endif // SDL_GetKeyFromName +#define SDL_GetKeyFromName SDL3_symbol_SDL_GetKeyFromName_is_marked_unused +#ifdef SDL_StartTextInput +#undef SDL_StartTextInput +#endif // SDL_StartTextInput +#define SDL_StartTextInput SDL3_symbol_SDL_StartTextInput_is_marked_unused +#ifdef SDL_StartTextInputWithProperties +#undef SDL_StartTextInputWithProperties +#endif // SDL_StartTextInputWithProperties +#define SDL_StartTextInputWithProperties SDL3_symbol_SDL_StartTextInputWithProperties_is_marked_unused +#ifdef SDL_TextInputActive +#undef SDL_TextInputActive +#endif // SDL_TextInputActive +#define SDL_TextInputActive SDL3_symbol_SDL_TextInputActive_is_marked_unused +#ifdef SDL_StopTextInput +#undef SDL_StopTextInput +#endif // SDL_StopTextInput +#define SDL_StopTextInput SDL3_symbol_SDL_StopTextInput_is_marked_unused +#ifdef SDL_ClearComposition +#undef SDL_ClearComposition +#endif // SDL_ClearComposition +#define SDL_ClearComposition SDL3_symbol_SDL_ClearComposition_is_marked_unused +#ifdef SDL_SetTextInputArea +#undef SDL_SetTextInputArea +#endif // SDL_SetTextInputArea +#define SDL_SetTextInputArea SDL3_symbol_SDL_SetTextInputArea_is_marked_unused +#ifdef SDL_GetTextInputArea +#undef SDL_GetTextInputArea +#endif // SDL_GetTextInputArea +#define SDL_GetTextInputArea SDL3_symbol_SDL_GetTextInputArea_is_marked_unused +#ifdef SDL_HasScreenKeyboardSupport +#undef SDL_HasScreenKeyboardSupport +#endif // SDL_HasScreenKeyboardSupport +#define SDL_HasScreenKeyboardSupport SDL3_symbol_SDL_HasScreenKeyboardSupport_is_marked_unused +#ifdef SDL_ScreenKeyboardShown +#undef SDL_ScreenKeyboardShown +#endif // SDL_ScreenKeyboardShown +#define SDL_ScreenKeyboardShown SDL3_symbol_SDL_ScreenKeyboardShown_is_marked_unused +#ifdef SDL_LoadObject +#undef SDL_LoadObject +#endif // SDL_LoadObject +#define SDL_LoadObject SDL3_symbol_SDL_LoadObject_is_marked_unused +#ifdef SDL_LoadFunction +#undef SDL_LoadFunction +#endif // SDL_LoadFunction +#define SDL_LoadFunction SDL3_symbol_SDL_LoadFunction_is_marked_unused +#ifdef SDL_UnloadObject +#undef SDL_UnloadObject +#endif // SDL_UnloadObject +#define SDL_UnloadObject SDL3_symbol_SDL_UnloadObject_is_marked_unused +#ifdef SDL_GetPreferredLocales +#undef SDL_GetPreferredLocales +#endif // SDL_GetPreferredLocales +#define SDL_GetPreferredLocales SDL3_symbol_SDL_GetPreferredLocales_is_marked_unused +#ifdef SDL_SetLogPriorities +#undef SDL_SetLogPriorities +#endif // SDL_SetLogPriorities +#define SDL_SetLogPriorities SDL3_symbol_SDL_SetLogPriorities_is_marked_unused +#ifdef SDL_SetLogPriority +#undef SDL_SetLogPriority +#endif // SDL_SetLogPriority +#define SDL_SetLogPriority SDL3_symbol_SDL_SetLogPriority_is_marked_unused +#ifdef SDL_GetLogPriority +#undef SDL_GetLogPriority +#endif // SDL_GetLogPriority +#define SDL_GetLogPriority SDL3_symbol_SDL_GetLogPriority_is_marked_unused +#ifdef SDL_ResetLogPriorities +#undef SDL_ResetLogPriorities +#endif // SDL_ResetLogPriorities +#define SDL_ResetLogPriorities SDL3_symbol_SDL_ResetLogPriorities_is_marked_unused +#ifdef SDL_SetLogPriorityPrefix +#undef SDL_SetLogPriorityPrefix +#endif // SDL_SetLogPriorityPrefix +#define SDL_SetLogPriorityPrefix SDL3_symbol_SDL_SetLogPriorityPrefix_is_marked_unused +#ifdef SDL_Log +#undef SDL_Log +#endif // SDL_Log +#define SDL_Log SDL3_symbol_SDL_Log_is_marked_unused +#ifdef SDL_LogTrace +#undef SDL_LogTrace +#endif // SDL_LogTrace +#define SDL_LogTrace SDL3_symbol_SDL_LogTrace_is_marked_unused +#ifdef SDL_LogVerbose +#undef SDL_LogVerbose +#endif // SDL_LogVerbose +#define SDL_LogVerbose SDL3_symbol_SDL_LogVerbose_is_marked_unused +#ifdef SDL_LogDebug +#undef SDL_LogDebug +#endif // SDL_LogDebug +#define SDL_LogDebug SDL3_symbol_SDL_LogDebug_is_marked_unused +#ifdef SDL_LogInfo +#undef SDL_LogInfo +#endif // SDL_LogInfo +#define SDL_LogInfo SDL3_symbol_SDL_LogInfo_is_marked_unused +#ifdef SDL_LogWarn +#undef SDL_LogWarn +#endif // SDL_LogWarn +#define SDL_LogWarn SDL3_symbol_SDL_LogWarn_is_marked_unused +#ifdef SDL_LogError +#undef SDL_LogError +#endif // SDL_LogError +#define SDL_LogError SDL3.SDL_LogError_symbol +#ifdef SDL_LogCritical +#undef SDL_LogCritical +#endif // SDL_LogCritical +#define SDL_LogCritical SDL3_symbol_SDL_LogCritical_is_marked_unused +#ifdef SDL_LogMessage +#undef SDL_LogMessage +#endif // SDL_LogMessage +#define SDL_LogMessage SDL3_symbol_SDL_LogMessage_is_marked_unused +#ifdef SDL_LogMessageV +#undef SDL_LogMessageV +#endif // SDL_LogMessageV +#define SDL_LogMessageV SDL3.SDL_LogMessageV_symbol +#ifdef SDL_GetDefaultLogOutputFunction +#undef SDL_GetDefaultLogOutputFunction +#endif // SDL_GetDefaultLogOutputFunction +#define SDL_GetDefaultLogOutputFunction SDL3_symbol_SDL_GetDefaultLogOutputFunction_is_marked_unused +#ifdef SDL_GetLogOutputFunction +#undef SDL_GetLogOutputFunction +#endif // SDL_GetLogOutputFunction +#define SDL_GetLogOutputFunction SDL3_symbol_SDL_GetLogOutputFunction_is_marked_unused +#ifdef SDL_SetLogOutputFunction +#undef SDL_SetLogOutputFunction +#endif // SDL_SetLogOutputFunction +#define SDL_SetLogOutputFunction SDL3_symbol_SDL_SetLogOutputFunction_is_marked_unused +#ifdef SDL_SetMainReady +#undef SDL_SetMainReady +#endif // SDL_SetMainReady +#define SDL_SetMainReady SDL3_symbol_SDL_SetMainReady_is_marked_unused +#ifdef SDL_RunApp +#undef SDL_RunApp +#endif // SDL_RunApp +#define SDL_RunApp SDL3.SDL_RunApp_symbol +#ifdef SDL_EnterAppMainCallbacks +#undef SDL_EnterAppMainCallbacks +#endif // SDL_EnterAppMainCallbacks +#define SDL_EnterAppMainCallbacks SDL3.SDL_EnterAppMainCallbacks_symbol +#ifdef SDL_RegisterApp +#undef SDL_RegisterApp +#endif // SDL_RegisterApp +#define SDL_RegisterApp SDL3_symbol_SDL_RegisterApp_is_marked_unused +#ifdef SDL_UnregisterApp +#undef SDL_UnregisterApp +#endif // SDL_UnregisterApp +#define SDL_UnregisterApp SDL3_symbol_SDL_UnregisterApp_is_marked_unused +#ifdef SDL_GDKSuspendComplete +#undef SDL_GDKSuspendComplete +#endif // SDL_GDKSuspendComplete +#define SDL_GDKSuspendComplete SDL3_symbol_SDL_GDKSuspendComplete_is_marked_unused +#ifdef SDL_ShowMessageBox +#undef SDL_ShowMessageBox +#endif // SDL_ShowMessageBox +#define SDL_ShowMessageBox SDL3_symbol_SDL_ShowMessageBox_is_marked_unused +#ifdef SDL_ShowSimpleMessageBox +#undef SDL_ShowSimpleMessageBox +#endif // SDL_ShowSimpleMessageBox +#define SDL_ShowSimpleMessageBox SDL3.SDL_ShowSimpleMessageBox_symbol +#ifdef SDL_Metal_CreateView +#undef SDL_Metal_CreateView +#endif // SDL_Metal_CreateView +#define SDL_Metal_CreateView SDL3_symbol_SDL_Metal_CreateView_is_marked_unused +#ifdef SDL_Metal_DestroyView +#undef SDL_Metal_DestroyView +#endif // SDL_Metal_DestroyView +#define SDL_Metal_DestroyView SDL3_symbol_SDL_Metal_DestroyView_is_marked_unused +#ifdef SDL_Metal_GetLayer +#undef SDL_Metal_GetLayer +#endif // SDL_Metal_GetLayer +#define SDL_Metal_GetLayer SDL3_symbol_SDL_Metal_GetLayer_is_marked_unused +#ifdef SDL_OpenURL +#undef SDL_OpenURL +#endif // SDL_OpenURL +#define SDL_OpenURL SDL3_symbol_SDL_OpenURL_is_marked_unused +#ifdef SDL_HasMouse +#undef SDL_HasMouse +#endif // SDL_HasMouse +#define SDL_HasMouse SDL3_symbol_SDL_HasMouse_is_marked_unused +#ifdef SDL_GetMice +#undef SDL_GetMice +#endif // SDL_GetMice +#define SDL_GetMice SDL3_symbol_SDL_GetMice_is_marked_unused +#ifdef SDL_GetMouseNameForID +#undef SDL_GetMouseNameForID +#endif // SDL_GetMouseNameForID +#define SDL_GetMouseNameForID SDL3_symbol_SDL_GetMouseNameForID_is_marked_unused +#ifdef SDL_GetMouseFocus +#undef SDL_GetMouseFocus +#endif // SDL_GetMouseFocus +#define SDL_GetMouseFocus SDL3_symbol_SDL_GetMouseFocus_is_marked_unused +#ifdef SDL_GetMouseState +#undef SDL_GetMouseState +#endif // SDL_GetMouseState +#define SDL_GetMouseState SDL3.SDL_GetMouseState_symbol +#ifdef SDL_GetGlobalMouseState +#undef SDL_GetGlobalMouseState +#endif // SDL_GetGlobalMouseState +#define SDL_GetGlobalMouseState SDL3_symbol_SDL_GetGlobalMouseState_is_marked_unused +#ifdef SDL_GetRelativeMouseState +#undef SDL_GetRelativeMouseState +#endif // SDL_GetRelativeMouseState +#define SDL_GetRelativeMouseState SDL3_symbol_SDL_GetRelativeMouseState_is_marked_unused +#ifdef SDL_WarpMouseInWindow +#undef SDL_WarpMouseInWindow +#endif // SDL_WarpMouseInWindow +#define SDL_WarpMouseInWindow SDL3.SDL_WarpMouseInWindow_symbol +#ifdef SDL_WarpMouseGlobal +#undef SDL_WarpMouseGlobal +#endif // SDL_WarpMouseGlobal +#define SDL_WarpMouseGlobal SDL3_symbol_SDL_WarpMouseGlobal_is_marked_unused +#ifdef SDL_SetRelativeMouseTransform +#undef SDL_SetRelativeMouseTransform +#endif // SDL_SetRelativeMouseTransform +#define SDL_SetRelativeMouseTransform SDL3_symbol_SDL_SetRelativeMouseTransform_is_marked_unused +#ifdef SDL_SetWindowRelativeMouseMode +#undef SDL_SetWindowRelativeMouseMode +#endif // SDL_SetWindowRelativeMouseMode +#define SDL_SetWindowRelativeMouseMode SDL3_symbol_SDL_SetWindowRelativeMouseMode_is_marked_unused +#ifdef SDL_GetWindowRelativeMouseMode +#undef SDL_GetWindowRelativeMouseMode +#endif // SDL_GetWindowRelativeMouseMode +#define SDL_GetWindowRelativeMouseMode SDL3_symbol_SDL_GetWindowRelativeMouseMode_is_marked_unused +#ifdef SDL_CaptureMouse +#undef SDL_CaptureMouse +#endif // SDL_CaptureMouse +#define SDL_CaptureMouse SDL3_symbol_SDL_CaptureMouse_is_marked_unused +#ifdef SDL_CreateCursor +#undef SDL_CreateCursor +#endif // SDL_CreateCursor +#define SDL_CreateCursor SDL3_symbol_SDL_CreateCursor_is_marked_unused +#ifdef SDL_CreateColorCursor +#undef SDL_CreateColorCursor +#endif // SDL_CreateColorCursor +#define SDL_CreateColorCursor SDL3_symbol_SDL_CreateColorCursor_is_marked_unused +#ifdef SDL_CreateAnimatedCursor +#undef SDL_CreateAnimatedCursor +#endif // SDL_CreateAnimatedCursor +#define SDL_CreateAnimatedCursor SDL3_symbol_SDL_CreateAnimatedCursor_is_marked_unused +#ifdef SDL_CreateSystemCursor +#undef SDL_CreateSystemCursor +#endif // SDL_CreateSystemCursor +#define SDL_CreateSystemCursor SDL3.SDL_CreateSystemCursor_symbol +#ifdef SDL_SetCursor +#undef SDL_SetCursor +#endif // SDL_SetCursor +#define SDL_SetCursor SDL3.SDL_SetCursor_symbol +#ifdef SDL_GetCursor +#undef SDL_GetCursor +#endif // SDL_GetCursor +#define SDL_GetCursor SDL3_symbol_SDL_GetCursor_is_marked_unused +#ifdef SDL_GetDefaultCursor +#undef SDL_GetDefaultCursor +#endif // SDL_GetDefaultCursor +#define SDL_GetDefaultCursor SDL3_symbol_SDL_GetDefaultCursor_is_marked_unused +#ifdef SDL_DestroyCursor +#undef SDL_DestroyCursor +#endif // SDL_DestroyCursor +#define SDL_DestroyCursor SDL3_symbol_SDL_DestroyCursor_is_marked_unused +#ifdef SDL_ShowCursor +#undef SDL_ShowCursor +#endif // SDL_ShowCursor +#define SDL_ShowCursor SDL3.SDL_ShowCursor_symbol +#ifdef SDL_HideCursor +#undef SDL_HideCursor +#endif // SDL_HideCursor +#define SDL_HideCursor SDL3.SDL_HideCursor_symbol +#ifdef SDL_CursorVisible +#undef SDL_CursorVisible +#endif // SDL_CursorVisible +#define SDL_CursorVisible SDL3_symbol_SDL_CursorVisible_is_marked_unused +#ifdef SDL_CreateMutex +#undef SDL_CreateMutex +#endif // SDL_CreateMutex +#define SDL_CreateMutex SDL3.SDL_CreateMutex_symbol +#ifdef SDL_LockMutex +#undef SDL_LockMutex +#endif // SDL_LockMutex +#define SDL_LockMutex SDL3.SDL_LockMutex_symbol +#ifdef SDL_TryLockMutex +#undef SDL_TryLockMutex +#endif // SDL_TryLockMutex +#define SDL_TryLockMutex SDL3_symbol_SDL_TryLockMutex_is_marked_unused +#ifdef SDL_UnlockMutex +#undef SDL_UnlockMutex +#endif // SDL_UnlockMutex +#define SDL_UnlockMutex SDL3.SDL_UnlockMutex_symbol +#ifdef SDL_DestroyMutex +#undef SDL_DestroyMutex +#endif // SDL_DestroyMutex +#define SDL_DestroyMutex SDL3.SDL_DestroyMutex_symbol +#ifdef SDL_CreateRWLock +#undef SDL_CreateRWLock +#endif // SDL_CreateRWLock +#define SDL_CreateRWLock SDL3_symbol_SDL_CreateRWLock_is_marked_unused +#ifdef SDL_LockRWLockForReading +#undef SDL_LockRWLockForReading +#endif // SDL_LockRWLockForReading +#define SDL_LockRWLockForReading SDL3_symbol_SDL_LockRWLockForReading_is_marked_unused +#ifdef SDL_LockRWLockForWriting +#undef SDL_LockRWLockForWriting +#endif // SDL_LockRWLockForWriting +#define SDL_LockRWLockForWriting SDL3_symbol_SDL_LockRWLockForWriting_is_marked_unused +#ifdef SDL_TryLockRWLockForReading +#undef SDL_TryLockRWLockForReading +#endif // SDL_TryLockRWLockForReading +#define SDL_TryLockRWLockForReading SDL3_symbol_SDL_TryLockRWLockForReading_is_marked_unused +#ifdef SDL_TryLockRWLockForWriting +#undef SDL_TryLockRWLockForWriting +#endif // SDL_TryLockRWLockForWriting +#define SDL_TryLockRWLockForWriting SDL3_symbol_SDL_TryLockRWLockForWriting_is_marked_unused +#ifdef SDL_UnlockRWLock +#undef SDL_UnlockRWLock +#endif // SDL_UnlockRWLock +#define SDL_UnlockRWLock SDL3_symbol_SDL_UnlockRWLock_is_marked_unused +#ifdef SDL_DestroyRWLock +#undef SDL_DestroyRWLock +#endif // SDL_DestroyRWLock +#define SDL_DestroyRWLock SDL3_symbol_SDL_DestroyRWLock_is_marked_unused +#ifdef SDL_CreateSemaphore +#undef SDL_CreateSemaphore +#endif // SDL_CreateSemaphore +#define SDL_CreateSemaphore SDL3.SDL_CreateSemaphore_symbol +#ifdef SDL_DestroySemaphore +#undef SDL_DestroySemaphore +#endif // SDL_DestroySemaphore +#define SDL_DestroySemaphore SDL3.SDL_DestroySemaphore_symbol +#ifdef SDL_WaitSemaphore +#undef SDL_WaitSemaphore +#endif // SDL_WaitSemaphore +#define SDL_WaitSemaphore SDL3.SDL_WaitSemaphore_symbol +#ifdef SDL_TryWaitSemaphore +#undef SDL_TryWaitSemaphore +#endif // SDL_TryWaitSemaphore +#define SDL_TryWaitSemaphore SDL3_symbol_SDL_TryWaitSemaphore_is_marked_unused +#ifdef SDL_WaitSemaphoreTimeout +#undef SDL_WaitSemaphoreTimeout +#endif // SDL_WaitSemaphoreTimeout +#define SDL_WaitSemaphoreTimeout SDL3_symbol_SDL_WaitSemaphoreTimeout_is_marked_unused +#ifdef SDL_SignalSemaphore +#undef SDL_SignalSemaphore +#endif // SDL_SignalSemaphore +#define SDL_SignalSemaphore SDL3.SDL_SignalSemaphore_symbol +#ifdef SDL_GetSemaphoreValue +#undef SDL_GetSemaphoreValue +#endif // SDL_GetSemaphoreValue +#define SDL_GetSemaphoreValue SDL3_symbol_SDL_GetSemaphoreValue_is_marked_unused +#ifdef SDL_CreateCondition +#undef SDL_CreateCondition +#endif // SDL_CreateCondition +#define SDL_CreateCondition SDL3_symbol_SDL_CreateCondition_is_marked_unused +#ifdef SDL_DestroyCondition +#undef SDL_DestroyCondition +#endif // SDL_DestroyCondition +#define SDL_DestroyCondition SDL3_symbol_SDL_DestroyCondition_is_marked_unused +#ifdef SDL_SignalCondition +#undef SDL_SignalCondition +#endif // SDL_SignalCondition +#define SDL_SignalCondition SDL3_symbol_SDL_SignalCondition_is_marked_unused +#ifdef SDL_BroadcastCondition +#undef SDL_BroadcastCondition +#endif // SDL_BroadcastCondition +#define SDL_BroadcastCondition SDL3_symbol_SDL_BroadcastCondition_is_marked_unused +#ifdef SDL_WaitCondition +#undef SDL_WaitCondition +#endif // SDL_WaitCondition +#define SDL_WaitCondition SDL3_symbol_SDL_WaitCondition_is_marked_unused +#ifdef SDL_WaitConditionTimeout +#undef SDL_WaitConditionTimeout +#endif // SDL_WaitConditionTimeout +#define SDL_WaitConditionTimeout SDL3_symbol_SDL_WaitConditionTimeout_is_marked_unused +#ifdef SDL_ShouldInit +#undef SDL_ShouldInit +#endif // SDL_ShouldInit +#define SDL_ShouldInit SDL3_symbol_SDL_ShouldInit_is_marked_unused +#ifdef SDL_ShouldQuit +#undef SDL_ShouldQuit +#endif // SDL_ShouldQuit +#define SDL_ShouldQuit SDL3_symbol_SDL_ShouldQuit_is_marked_unused +#ifdef SDL_SetInitialized +#undef SDL_SetInitialized +#endif // SDL_SetInitialized +#define SDL_SetInitialized SDL3_symbol_SDL_SetInitialized_is_marked_unused +#ifdef SDL_GetPenDeviceType +#undef SDL_GetPenDeviceType +#endif // SDL_GetPenDeviceType +#define SDL_GetPenDeviceType SDL3_symbol_SDL_GetPenDeviceType_is_marked_unused +#ifdef SDL_GetPixelFormatName +#undef SDL_GetPixelFormatName +#endif // SDL_GetPixelFormatName +#define SDL_GetPixelFormatName SDL3.SDL_GetPixelFormatName_symbol +#ifdef SDL_GetMasksForPixelFormat +#undef SDL_GetMasksForPixelFormat +#endif // SDL_GetMasksForPixelFormat +#define SDL_GetMasksForPixelFormat SDL3_symbol_SDL_GetMasksForPixelFormat_is_marked_unused +#ifdef SDL_GetPixelFormatForMasks +#undef SDL_GetPixelFormatForMasks +#endif // SDL_GetPixelFormatForMasks +#define SDL_GetPixelFormatForMasks SDL3.SDL_GetPixelFormatForMasks_symbol +#ifdef SDL_GetPixelFormatDetails +#undef SDL_GetPixelFormatDetails +#endif // SDL_GetPixelFormatDetails +#define SDL_GetPixelFormatDetails SDL3.SDL_GetPixelFormatDetails_symbol +#ifdef SDL_CreatePalette +#undef SDL_CreatePalette +#endif // SDL_CreatePalette +#define SDL_CreatePalette SDL3.SDL_CreatePalette_symbol +#ifdef SDL_SetPaletteColors +#undef SDL_SetPaletteColors +#endif // SDL_SetPaletteColors +#define SDL_SetPaletteColors SDL3.SDL_SetPaletteColors_symbol +#ifdef SDL_DestroyPalette +#undef SDL_DestroyPalette +#endif // SDL_DestroyPalette +#define SDL_DestroyPalette SDL3.SDL_DestroyPalette_symbol +#ifdef SDL_MapRGB +#undef SDL_MapRGB +#endif // SDL_MapRGB +#define SDL_MapRGB SDL3.SDL_MapRGB_symbol +#ifdef SDL_MapRGBA +#undef SDL_MapRGBA +#endif // SDL_MapRGBA +#define SDL_MapRGBA SDL3.SDL_MapRGBA_symbol +#ifdef SDL_GetRGB +#undef SDL_GetRGB +#endif // SDL_GetRGB +#define SDL_GetRGB SDL3_symbol_SDL_GetRGB_is_marked_unused +#ifdef SDL_GetRGBA +#undef SDL_GetRGBA +#endif // SDL_GetRGBA +#define SDL_GetRGBA SDL3.SDL_GetRGBA_symbol +#ifdef SDL_GetPlatform +#undef SDL_GetPlatform +#endif // SDL_GetPlatform +#define SDL_GetPlatform SDL3_symbol_SDL_GetPlatform_is_marked_unused +#ifdef SDL_GetPowerInfo +#undef SDL_GetPowerInfo +#endif // SDL_GetPowerInfo +#define SDL_GetPowerInfo SDL3_symbol_SDL_GetPowerInfo_is_marked_unused +#ifdef SDL_CreateProcess +#undef SDL_CreateProcess +#endif // SDL_CreateProcess +#define SDL_CreateProcess SDL3.SDL_CreateProcess_symbol +#ifdef SDL_CreateProcessWithProperties +#undef SDL_CreateProcessWithProperties +#endif // SDL_CreateProcessWithProperties +#define SDL_CreateProcessWithProperties SDL3_symbol_SDL_CreateProcessWithProperties_is_marked_unused +#ifdef SDL_GetProcessProperties +#undef SDL_GetProcessProperties +#endif // SDL_GetProcessProperties +#define SDL_GetProcessProperties SDL3_symbol_SDL_GetProcessProperties_is_marked_unused +#ifdef SDL_ReadProcess +#undef SDL_ReadProcess +#endif // SDL_ReadProcess +#define SDL_ReadProcess SDL3_symbol_SDL_ReadProcess_is_marked_unused +#ifdef SDL_GetProcessInput +#undef SDL_GetProcessInput +#endif // SDL_GetProcessInput +#define SDL_GetProcessInput SDL3_symbol_SDL_GetProcessInput_is_marked_unused +#ifdef SDL_GetProcessOutput +#undef SDL_GetProcessOutput +#endif // SDL_GetProcessOutput +#define SDL_GetProcessOutput SDL3_symbol_SDL_GetProcessOutput_is_marked_unused +#ifdef SDL_KillProcess +#undef SDL_KillProcess +#endif // SDL_KillProcess +#define SDL_KillProcess SDL3_symbol_SDL_KillProcess_is_marked_unused +#ifdef SDL_WaitProcess +#undef SDL_WaitProcess +#endif // SDL_WaitProcess +#define SDL_WaitProcess SDL3_symbol_SDL_WaitProcess_is_marked_unused +#ifdef SDL_DestroyProcess +#undef SDL_DestroyProcess +#endif // SDL_DestroyProcess +#define SDL_DestroyProcess SDL3_symbol_SDL_DestroyProcess_is_marked_unused +#ifdef SDL_GetGlobalProperties +#undef SDL_GetGlobalProperties +#endif // SDL_GetGlobalProperties +#define SDL_GetGlobalProperties SDL3_symbol_SDL_GetGlobalProperties_is_marked_unused +#ifdef SDL_CreateProperties +#undef SDL_CreateProperties +#endif // SDL_CreateProperties +#define SDL_CreateProperties SDL3.SDL_CreateProperties_symbol +#ifdef SDL_CopyProperties +#undef SDL_CopyProperties +#endif // SDL_CopyProperties +#define SDL_CopyProperties SDL3_symbol_SDL_CopyProperties_is_marked_unused +#ifdef SDL_LockProperties +#undef SDL_LockProperties +#endif // SDL_LockProperties +#define SDL_LockProperties SDL3_symbol_SDL_LockProperties_is_marked_unused +#ifdef SDL_UnlockProperties +#undef SDL_UnlockProperties +#endif // SDL_UnlockProperties +#define SDL_UnlockProperties SDL3_symbol_SDL_UnlockProperties_is_marked_unused +#ifdef SDL_SetPointerPropertyWithCleanup +#undef SDL_SetPointerPropertyWithCleanup +#endif // SDL_SetPointerPropertyWithCleanup +#define SDL_SetPointerPropertyWithCleanup SDL3_symbol_SDL_SetPointerPropertyWithCleanup_is_marked_unused +#ifdef SDL_SetPointerProperty +#undef SDL_SetPointerProperty +#endif // SDL_SetPointerProperty +#define SDL_SetPointerProperty SDL3.SDL_SetPointerProperty_symbol +#ifdef SDL_SetStringProperty +#undef SDL_SetStringProperty +#endif // SDL_SetStringProperty +#define SDL_SetStringProperty SDL3.SDL_SetStringProperty_symbol +#ifdef SDL_SetNumberProperty +#undef SDL_SetNumberProperty +#endif // SDL_SetNumberProperty +#define SDL_SetNumberProperty SDL3.SDL_SetNumberProperty_symbol +#ifdef SDL_SetFloatProperty +#undef SDL_SetFloatProperty +#endif // SDL_SetFloatProperty +#define SDL_SetFloatProperty SDL3_symbol_SDL_SetFloatProperty_is_marked_unused +#ifdef SDL_SetBooleanProperty +#undef SDL_SetBooleanProperty +#endif // SDL_SetBooleanProperty +#define SDL_SetBooleanProperty SDL3.SDL_SetBooleanProperty_symbol +#ifdef SDL_HasProperty +#undef SDL_HasProperty +#endif // SDL_HasProperty +#define SDL_HasProperty SDL3_symbol_SDL_HasProperty_is_marked_unused +#ifdef SDL_GetPropertyType +#undef SDL_GetPropertyType +#endif // SDL_GetPropertyType +#define SDL_GetPropertyType SDL3_symbol_SDL_GetPropertyType_is_marked_unused +#ifdef SDL_GetPointerProperty +#undef SDL_GetPointerProperty +#endif // SDL_GetPointerProperty +#define SDL_GetPointerProperty SDL3.SDL_GetPointerProperty_symbol +#ifdef SDL_GetStringProperty +#undef SDL_GetStringProperty +#endif // SDL_GetStringProperty +#define SDL_GetStringProperty SDL3_symbol_SDL_GetStringProperty_is_marked_unused +#ifdef SDL_GetNumberProperty +#undef SDL_GetNumberProperty +#endif // SDL_GetNumberProperty +#define SDL_GetNumberProperty SDL3_symbol_SDL_GetNumberProperty_is_marked_unused +#ifdef SDL_GetFloatProperty +#undef SDL_GetFloatProperty +#endif // SDL_GetFloatProperty +#define SDL_GetFloatProperty SDL3_symbol_SDL_GetFloatProperty_is_marked_unused +#ifdef SDL_GetBooleanProperty +#undef SDL_GetBooleanProperty +#endif // SDL_GetBooleanProperty +#define SDL_GetBooleanProperty SDL3_symbol_SDL_GetBooleanProperty_is_marked_unused +#ifdef SDL_ClearProperty +#undef SDL_ClearProperty +#endif // SDL_ClearProperty +#define SDL_ClearProperty SDL3_symbol_SDL_ClearProperty_is_marked_unused +#ifdef SDL_EnumerateProperties +#undef SDL_EnumerateProperties +#endif // SDL_EnumerateProperties +#define SDL_EnumerateProperties SDL3_symbol_SDL_EnumerateProperties_is_marked_unused +#ifdef SDL_DestroyProperties +#undef SDL_DestroyProperties +#endif // SDL_DestroyProperties +#define SDL_DestroyProperties SDL3.SDL_DestroyProperties_symbol +#ifdef SDL_HasRectIntersection +#undef SDL_HasRectIntersection +#endif // SDL_HasRectIntersection +#define SDL_HasRectIntersection SDL3_symbol_SDL_HasRectIntersection_is_marked_unused +#ifdef SDL_GetRectIntersection +#undef SDL_GetRectIntersection +#endif // SDL_GetRectIntersection +#define SDL_GetRectIntersection SDL3_symbol_SDL_GetRectIntersection_is_marked_unused +#ifdef SDL_GetRectUnion +#undef SDL_GetRectUnion +#endif // SDL_GetRectUnion +#define SDL_GetRectUnion SDL3_symbol_SDL_GetRectUnion_is_marked_unused +#ifdef SDL_GetRectEnclosingPoints +#undef SDL_GetRectEnclosingPoints +#endif // SDL_GetRectEnclosingPoints +#define SDL_GetRectEnclosingPoints SDL3_symbol_SDL_GetRectEnclosingPoints_is_marked_unused +#ifdef SDL_GetRectAndLineIntersection +#undef SDL_GetRectAndLineIntersection +#endif // SDL_GetRectAndLineIntersection +#define SDL_GetRectAndLineIntersection SDL3_symbol_SDL_GetRectAndLineIntersection_is_marked_unused +#ifdef SDL_HasRectIntersectionFloat +#undef SDL_HasRectIntersectionFloat +#endif // SDL_HasRectIntersectionFloat +#define SDL_HasRectIntersectionFloat SDL3_symbol_SDL_HasRectIntersectionFloat_is_marked_unused +#ifdef SDL_GetRectIntersectionFloat +#undef SDL_GetRectIntersectionFloat +#endif // SDL_GetRectIntersectionFloat +#define SDL_GetRectIntersectionFloat SDL3_symbol_SDL_GetRectIntersectionFloat_is_marked_unused +#ifdef SDL_GetRectUnionFloat +#undef SDL_GetRectUnionFloat +#endif // SDL_GetRectUnionFloat +#define SDL_GetRectUnionFloat SDL3_symbol_SDL_GetRectUnionFloat_is_marked_unused +#ifdef SDL_GetRectEnclosingPointsFloat +#undef SDL_GetRectEnclosingPointsFloat +#endif // SDL_GetRectEnclosingPointsFloat +#define SDL_GetRectEnclosingPointsFloat SDL3_symbol_SDL_GetRectEnclosingPointsFloat_is_marked_unused +#ifdef SDL_GetRectAndLineIntersectionFloat +#undef SDL_GetRectAndLineIntersectionFloat +#endif // SDL_GetRectAndLineIntersectionFloat +#define SDL_GetRectAndLineIntersectionFloat SDL3_symbol_SDL_GetRectAndLineIntersectionFloat_is_marked_unused +#ifdef SDL_GetNumRenderDrivers +#undef SDL_GetNumRenderDrivers +#endif // SDL_GetNumRenderDrivers +#define SDL_GetNumRenderDrivers SDL3_symbol_SDL_GetNumRenderDrivers_is_marked_unused +#ifdef SDL_GetRenderDriver +#undef SDL_GetRenderDriver +#endif // SDL_GetRenderDriver +#define SDL_GetRenderDriver SDL3_symbol_SDL_GetRenderDriver_is_marked_unused +#ifdef SDL_CreateWindowAndRenderer +#undef SDL_CreateWindowAndRenderer +#endif // SDL_CreateWindowAndRenderer +#define SDL_CreateWindowAndRenderer SDL3_symbol_SDL_CreateWindowAndRenderer_is_marked_unused +#ifdef SDL_CreateRenderer +#undef SDL_CreateRenderer +#endif // SDL_CreateRenderer +#define SDL_CreateRenderer SDL3.SDL_CreateRenderer_symbol +#ifdef SDL_CreateRendererWithProperties +#undef SDL_CreateRendererWithProperties +#endif // SDL_CreateRendererWithProperties +#define SDL_CreateRendererWithProperties SDL3_symbol_SDL_CreateRendererWithProperties_is_marked_unused +#ifdef SDL_CreateGPURenderer +#undef SDL_CreateGPURenderer +#endif // SDL_CreateGPURenderer +#define SDL_CreateGPURenderer SDL3_symbol_SDL_CreateGPURenderer_is_marked_unused +#ifdef SDL_GetGPURendererDevice +#undef SDL_GetGPURendererDevice +#endif // SDL_GetGPURendererDevice +#define SDL_GetGPURendererDevice SDL3_symbol_SDL_GetGPURendererDevice_is_marked_unused +#ifdef SDL_CreateSoftwareRenderer +#undef SDL_CreateSoftwareRenderer +#endif // SDL_CreateSoftwareRenderer +#define SDL_CreateSoftwareRenderer SDL3_symbol_SDL_CreateSoftwareRenderer_is_marked_unused +#ifdef SDL_GetRenderer +#undef SDL_GetRenderer +#endif // SDL_GetRenderer +#define SDL_GetRenderer SDL3_symbol_SDL_GetRenderer_is_marked_unused +#ifdef SDL_GetRenderWindow +#undef SDL_GetRenderWindow +#endif // SDL_GetRenderWindow +#define SDL_GetRenderWindow SDL3_symbol_SDL_GetRenderWindow_is_marked_unused +#ifdef SDL_GetRendererName +#undef SDL_GetRendererName +#endif // SDL_GetRendererName +#define SDL_GetRendererName SDL3_symbol_SDL_GetRendererName_is_marked_unused +#ifdef SDL_GetRendererProperties +#undef SDL_GetRendererProperties +#endif // SDL_GetRendererProperties +#define SDL_GetRendererProperties SDL3_symbol_SDL_GetRendererProperties_is_marked_unused +#ifdef SDL_GetRenderOutputSize +#undef SDL_GetRenderOutputSize +#endif // SDL_GetRenderOutputSize +#define SDL_GetRenderOutputSize SDL3_symbol_SDL_GetRenderOutputSize_is_marked_unused +#ifdef SDL_GetCurrentRenderOutputSize +#undef SDL_GetCurrentRenderOutputSize +#endif // SDL_GetCurrentRenderOutputSize +#define SDL_GetCurrentRenderOutputSize SDL3_symbol_SDL_GetCurrentRenderOutputSize_is_marked_unused +#ifdef SDL_CreateTexture +#undef SDL_CreateTexture +#endif // SDL_CreateTexture +#define SDL_CreateTexture SDL3.SDL_CreateTexture_symbol +#ifdef SDL_CreateTextureFromSurface +#undef SDL_CreateTextureFromSurface +#endif // SDL_CreateTextureFromSurface +#define SDL_CreateTextureFromSurface SDL3_symbol_SDL_CreateTextureFromSurface_is_marked_unused +#ifdef SDL_CreateTextureWithProperties +#undef SDL_CreateTextureWithProperties +#endif // SDL_CreateTextureWithProperties +#define SDL_CreateTextureWithProperties SDL3_symbol_SDL_CreateTextureWithProperties_is_marked_unused +#ifdef SDL_GetTextureProperties +#undef SDL_GetTextureProperties +#endif // SDL_GetTextureProperties +#define SDL_GetTextureProperties SDL3_symbol_SDL_GetTextureProperties_is_marked_unused +#ifdef SDL_GetRendererFromTexture +#undef SDL_GetRendererFromTexture +#endif // SDL_GetRendererFromTexture +#define SDL_GetRendererFromTexture SDL3_symbol_SDL_GetRendererFromTexture_is_marked_unused +#ifdef SDL_GetTextureSize +#undef SDL_GetTextureSize +#endif // SDL_GetTextureSize +#define SDL_GetTextureSize SDL3_symbol_SDL_GetTextureSize_is_marked_unused +#ifdef SDL_SetTexturePalette +#undef SDL_SetTexturePalette +#endif // SDL_SetTexturePalette +#define SDL_SetTexturePalette SDL3_symbol_SDL_SetTexturePalette_is_marked_unused +#ifdef SDL_GetTexturePalette +#undef SDL_GetTexturePalette +#endif // SDL_GetTexturePalette +#define SDL_GetTexturePalette SDL3_symbol_SDL_GetTexturePalette_is_marked_unused +#ifdef SDL_SetTextureColorMod +#undef SDL_SetTextureColorMod +#endif // SDL_SetTextureColorMod +#define SDL_SetTextureColorMod SDL3_symbol_SDL_SetTextureColorMod_is_marked_unused +#ifdef SDL_SetTextureColorModFloat +#undef SDL_SetTextureColorModFloat +#endif // SDL_SetTextureColorModFloat +#define SDL_SetTextureColorModFloat SDL3_symbol_SDL_SetTextureColorModFloat_is_marked_unused +#ifdef SDL_GetTextureColorMod +#undef SDL_GetTextureColorMod +#endif // SDL_GetTextureColorMod +#define SDL_GetTextureColorMod SDL3_symbol_SDL_GetTextureColorMod_is_marked_unused +#ifdef SDL_GetTextureColorModFloat +#undef SDL_GetTextureColorModFloat +#endif // SDL_GetTextureColorModFloat +#define SDL_GetTextureColorModFloat SDL3_symbol_SDL_GetTextureColorModFloat_is_marked_unused +#ifdef SDL_SetTextureAlphaMod +#undef SDL_SetTextureAlphaMod +#endif // SDL_SetTextureAlphaMod +#define SDL_SetTextureAlphaMod SDL3_symbol_SDL_SetTextureAlphaMod_is_marked_unused +#ifdef SDL_SetTextureAlphaModFloat +#undef SDL_SetTextureAlphaModFloat +#endif // SDL_SetTextureAlphaModFloat +#define SDL_SetTextureAlphaModFloat SDL3_symbol_SDL_SetTextureAlphaModFloat_is_marked_unused +#ifdef SDL_GetTextureAlphaMod +#undef SDL_GetTextureAlphaMod +#endif // SDL_GetTextureAlphaMod +#define SDL_GetTextureAlphaMod SDL3_symbol_SDL_GetTextureAlphaMod_is_marked_unused +#ifdef SDL_GetTextureAlphaModFloat +#undef SDL_GetTextureAlphaModFloat +#endif // SDL_GetTextureAlphaModFloat +#define SDL_GetTextureAlphaModFloat SDL3_symbol_SDL_GetTextureAlphaModFloat_is_marked_unused +#ifdef SDL_SetTextureBlendMode +#undef SDL_SetTextureBlendMode +#endif // SDL_SetTextureBlendMode +#define SDL_SetTextureBlendMode SDL3_symbol_SDL_SetTextureBlendMode_is_marked_unused +#ifdef SDL_GetTextureBlendMode +#undef SDL_GetTextureBlendMode +#endif // SDL_GetTextureBlendMode +#define SDL_GetTextureBlendMode SDL3_symbol_SDL_GetTextureBlendMode_is_marked_unused +#ifdef SDL_SetTextureScaleMode +#undef SDL_SetTextureScaleMode +#endif // SDL_SetTextureScaleMode +#define SDL_SetTextureScaleMode SDL3_symbol_SDL_SetTextureScaleMode_is_marked_unused +#ifdef SDL_GetTextureScaleMode +#undef SDL_GetTextureScaleMode +#endif // SDL_GetTextureScaleMode +#define SDL_GetTextureScaleMode SDL3_symbol_SDL_GetTextureScaleMode_is_marked_unused +#ifdef SDL_UpdateTexture +#undef SDL_UpdateTexture +#endif // SDL_UpdateTexture +#define SDL_UpdateTexture SDL3.SDL_UpdateTexture_symbol +#ifdef SDL_UpdateYUVTexture +#undef SDL_UpdateYUVTexture +#endif // SDL_UpdateYUVTexture +#define SDL_UpdateYUVTexture SDL3_symbol_SDL_UpdateYUVTexture_is_marked_unused +#ifdef SDL_UpdateNVTexture +#undef SDL_UpdateNVTexture +#endif // SDL_UpdateNVTexture +#define SDL_UpdateNVTexture SDL3_symbol_SDL_UpdateNVTexture_is_marked_unused +#ifdef SDL_LockTexture +#undef SDL_LockTexture +#endif // SDL_LockTexture +#define SDL_LockTexture SDL3_symbol_SDL_LockTexture_is_marked_unused +#ifdef SDL_LockTextureToSurface +#undef SDL_LockTextureToSurface +#endif // SDL_LockTextureToSurface +#define SDL_LockTextureToSurface SDL3_symbol_SDL_LockTextureToSurface_is_marked_unused +#ifdef SDL_UnlockTexture +#undef SDL_UnlockTexture +#endif // SDL_UnlockTexture +#define SDL_UnlockTexture SDL3_symbol_SDL_UnlockTexture_is_marked_unused +#ifdef SDL_SetRenderTarget +#undef SDL_SetRenderTarget +#endif // SDL_SetRenderTarget +#define SDL_SetRenderTarget SDL3_symbol_SDL_SetRenderTarget_is_marked_unused +#ifdef SDL_GetRenderTarget +#undef SDL_GetRenderTarget +#endif // SDL_GetRenderTarget +#define SDL_GetRenderTarget SDL3_symbol_SDL_GetRenderTarget_is_marked_unused +#ifdef SDL_SetRenderLogicalPresentation +#undef SDL_SetRenderLogicalPresentation +#endif // SDL_SetRenderLogicalPresentation +#define SDL_SetRenderLogicalPresentation SDL3_symbol_SDL_SetRenderLogicalPresentation_is_marked_unused +#ifdef SDL_GetRenderLogicalPresentation +#undef SDL_GetRenderLogicalPresentation +#endif // SDL_GetRenderLogicalPresentation +#define SDL_GetRenderLogicalPresentation SDL3_symbol_SDL_GetRenderLogicalPresentation_is_marked_unused +#ifdef SDL_GetRenderLogicalPresentationRect +#undef SDL_GetRenderLogicalPresentationRect +#endif // SDL_GetRenderLogicalPresentationRect +#define SDL_GetRenderLogicalPresentationRect SDL3_symbol_SDL_GetRenderLogicalPresentationRect_is_marked_unused +#ifdef SDL_RenderCoordinatesFromWindow +#undef SDL_RenderCoordinatesFromWindow +#endif // SDL_RenderCoordinatesFromWindow +#define SDL_RenderCoordinatesFromWindow SDL3_symbol_SDL_RenderCoordinatesFromWindow_is_marked_unused +#ifdef SDL_RenderCoordinatesToWindow +#undef SDL_RenderCoordinatesToWindow +#endif // SDL_RenderCoordinatesToWindow +#define SDL_RenderCoordinatesToWindow SDL3_symbol_SDL_RenderCoordinatesToWindow_is_marked_unused +#ifdef SDL_ConvertEventToRenderCoordinates +#undef SDL_ConvertEventToRenderCoordinates +#endif // SDL_ConvertEventToRenderCoordinates +#define SDL_ConvertEventToRenderCoordinates SDL3_symbol_SDL_ConvertEventToRenderCoordinates_is_marked_unused +#ifdef SDL_SetRenderViewport +#undef SDL_SetRenderViewport +#endif // SDL_SetRenderViewport +#define SDL_SetRenderViewport SDL3_symbol_SDL_SetRenderViewport_is_marked_unused +#ifdef SDL_GetRenderViewport +#undef SDL_GetRenderViewport +#endif // SDL_GetRenderViewport +#define SDL_GetRenderViewport SDL3_symbol_SDL_GetRenderViewport_is_marked_unused +#ifdef SDL_RenderViewportSet +#undef SDL_RenderViewportSet +#endif // SDL_RenderViewportSet +#define SDL_RenderViewportSet SDL3_symbol_SDL_RenderViewportSet_is_marked_unused +#ifdef SDL_GetRenderSafeArea +#undef SDL_GetRenderSafeArea +#endif // SDL_GetRenderSafeArea +#define SDL_GetRenderSafeArea SDL3_symbol_SDL_GetRenderSafeArea_is_marked_unused +#ifdef SDL_SetRenderClipRect +#undef SDL_SetRenderClipRect +#endif // SDL_SetRenderClipRect +#define SDL_SetRenderClipRect SDL3_symbol_SDL_SetRenderClipRect_is_marked_unused +#ifdef SDL_GetRenderClipRect +#undef SDL_GetRenderClipRect +#endif // SDL_GetRenderClipRect +#define SDL_GetRenderClipRect SDL3_symbol_SDL_GetRenderClipRect_is_marked_unused +#ifdef SDL_RenderClipEnabled +#undef SDL_RenderClipEnabled +#endif // SDL_RenderClipEnabled +#define SDL_RenderClipEnabled SDL3_symbol_SDL_RenderClipEnabled_is_marked_unused +#ifdef SDL_SetRenderScale +#undef SDL_SetRenderScale +#endif // SDL_SetRenderScale +#define SDL_SetRenderScale SDL3_symbol_SDL_SetRenderScale_is_marked_unused +#ifdef SDL_GetRenderScale +#undef SDL_GetRenderScale +#endif // SDL_GetRenderScale +#define SDL_GetRenderScale SDL3_symbol_SDL_GetRenderScale_is_marked_unused +#ifdef SDL_SetRenderDrawColor +#undef SDL_SetRenderDrawColor +#endif // SDL_SetRenderDrawColor +#define SDL_SetRenderDrawColor SDL3_symbol_SDL_SetRenderDrawColor_is_marked_unused +#ifdef SDL_SetRenderDrawColorFloat +#undef SDL_SetRenderDrawColorFloat +#endif // SDL_SetRenderDrawColorFloat +#define SDL_SetRenderDrawColorFloat SDL3_symbol_SDL_SetRenderDrawColorFloat_is_marked_unused +#ifdef SDL_GetRenderDrawColor +#undef SDL_GetRenderDrawColor +#endif // SDL_GetRenderDrawColor +#define SDL_GetRenderDrawColor SDL3_symbol_SDL_GetRenderDrawColor_is_marked_unused +#ifdef SDL_GetRenderDrawColorFloat +#undef SDL_GetRenderDrawColorFloat +#endif // SDL_GetRenderDrawColorFloat +#define SDL_GetRenderDrawColorFloat SDL3_symbol_SDL_GetRenderDrawColorFloat_is_marked_unused +#ifdef SDL_SetRenderColorScale +#undef SDL_SetRenderColorScale +#endif // SDL_SetRenderColorScale +#define SDL_SetRenderColorScale SDL3_symbol_SDL_SetRenderColorScale_is_marked_unused +#ifdef SDL_GetRenderColorScale +#undef SDL_GetRenderColorScale +#endif // SDL_GetRenderColorScale +#define SDL_GetRenderColorScale SDL3_symbol_SDL_GetRenderColorScale_is_marked_unused +#ifdef SDL_SetRenderDrawBlendMode +#undef SDL_SetRenderDrawBlendMode +#endif // SDL_SetRenderDrawBlendMode +#define SDL_SetRenderDrawBlendMode SDL3_symbol_SDL_SetRenderDrawBlendMode_is_marked_unused +#ifdef SDL_GetRenderDrawBlendMode +#undef SDL_GetRenderDrawBlendMode +#endif // SDL_GetRenderDrawBlendMode +#define SDL_GetRenderDrawBlendMode SDL3_symbol_SDL_GetRenderDrawBlendMode_is_marked_unused +#ifdef SDL_RenderClear +#undef SDL_RenderClear +#endif // SDL_RenderClear +#define SDL_RenderClear SDL3_symbol_SDL_RenderClear_is_marked_unused +#ifdef SDL_RenderPoint +#undef SDL_RenderPoint +#endif // SDL_RenderPoint +#define SDL_RenderPoint SDL3_symbol_SDL_RenderPoint_is_marked_unused +#ifdef SDL_RenderPoints +#undef SDL_RenderPoints +#endif // SDL_RenderPoints +#define SDL_RenderPoints SDL3_symbol_SDL_RenderPoints_is_marked_unused +#ifdef SDL_RenderLine +#undef SDL_RenderLine +#endif // SDL_RenderLine +#define SDL_RenderLine SDL3_symbol_SDL_RenderLine_is_marked_unused +#ifdef SDL_RenderLines +#undef SDL_RenderLines +#endif // SDL_RenderLines +#define SDL_RenderLines SDL3_symbol_SDL_RenderLines_is_marked_unused +#ifdef SDL_RenderRect +#undef SDL_RenderRect +#endif // SDL_RenderRect +#define SDL_RenderRect SDL3_symbol_SDL_RenderRect_is_marked_unused +#ifdef SDL_RenderRects +#undef SDL_RenderRects +#endif // SDL_RenderRects +#define SDL_RenderRects SDL3_symbol_SDL_RenderRects_is_marked_unused +#ifdef SDL_RenderFillRect +#undef SDL_RenderFillRect +#endif // SDL_RenderFillRect +#define SDL_RenderFillRect SDL3_symbol_SDL_RenderFillRect_is_marked_unused +#ifdef SDL_RenderFillRects +#undef SDL_RenderFillRects +#endif // SDL_RenderFillRects +#define SDL_RenderFillRects SDL3_symbol_SDL_RenderFillRects_is_marked_unused +#ifdef SDL_RenderTexture +#undef SDL_RenderTexture +#endif // SDL_RenderTexture +#define SDL_RenderTexture SDL3.SDL_RenderTexture_symbol +#ifdef SDL_RenderTextureRotated +#undef SDL_RenderTextureRotated +#endif // SDL_RenderTextureRotated +#define SDL_RenderTextureRotated SDL3_symbol_SDL_RenderTextureRotated_is_marked_unused +#ifdef SDL_RenderTextureAffine +#undef SDL_RenderTextureAffine +#endif // SDL_RenderTextureAffine +#define SDL_RenderTextureAffine SDL3_symbol_SDL_RenderTextureAffine_is_marked_unused +#ifdef SDL_RenderTextureTiled +#undef SDL_RenderTextureTiled +#endif // SDL_RenderTextureTiled +#define SDL_RenderTextureTiled SDL3_symbol_SDL_RenderTextureTiled_is_marked_unused +#ifdef SDL_RenderTexture9Grid +#undef SDL_RenderTexture9Grid +#endif // SDL_RenderTexture9Grid +#define SDL_RenderTexture9Grid SDL3_symbol_SDL_RenderTexture9Grid_is_marked_unused +#ifdef SDL_RenderTexture9GridTiled +#undef SDL_RenderTexture9GridTiled +#endif // SDL_RenderTexture9GridTiled +#define SDL_RenderTexture9GridTiled SDL3_symbol_SDL_RenderTexture9GridTiled_is_marked_unused +#ifdef SDL_RenderGeometry +#undef SDL_RenderGeometry +#endif // SDL_RenderGeometry +#define SDL_RenderGeometry SDL3_symbol_SDL_RenderGeometry_is_marked_unused +#ifdef SDL_RenderGeometryRaw +#undef SDL_RenderGeometryRaw +#endif // SDL_RenderGeometryRaw +#define SDL_RenderGeometryRaw SDL3_symbol_SDL_RenderGeometryRaw_is_marked_unused +#ifdef SDL_SetRenderTextureAddressMode +#undef SDL_SetRenderTextureAddressMode +#endif // SDL_SetRenderTextureAddressMode +#define SDL_SetRenderTextureAddressMode SDL3_symbol_SDL_SetRenderTextureAddressMode_is_marked_unused +#ifdef SDL_GetRenderTextureAddressMode +#undef SDL_GetRenderTextureAddressMode +#endif // SDL_GetRenderTextureAddressMode +#define SDL_GetRenderTextureAddressMode SDL3_symbol_SDL_GetRenderTextureAddressMode_is_marked_unused +#ifdef SDL_RenderReadPixels +#undef SDL_RenderReadPixels +#endif // SDL_RenderReadPixels +#define SDL_RenderReadPixels SDL3_symbol_SDL_RenderReadPixels_is_marked_unused +#ifdef SDL_RenderPresent +#undef SDL_RenderPresent +#endif // SDL_RenderPresent +#define SDL_RenderPresent SDL3.SDL_RenderPresent_symbol +#ifdef SDL_DestroyTexture +#undef SDL_DestroyTexture +#endif // SDL_DestroyTexture +#define SDL_DestroyTexture SDL3.SDL_DestroyTexture_symbol +#ifdef SDL_DestroyRenderer +#undef SDL_DestroyRenderer +#endif // SDL_DestroyRenderer +#define SDL_DestroyRenderer SDL3.SDL_DestroyRenderer_symbol +#ifdef SDL_FlushRenderer +#undef SDL_FlushRenderer +#endif // SDL_FlushRenderer +#define SDL_FlushRenderer SDL3_symbol_SDL_FlushRenderer_is_marked_unused +#ifdef SDL_GetRenderMetalLayer +#undef SDL_GetRenderMetalLayer +#endif // SDL_GetRenderMetalLayer +#define SDL_GetRenderMetalLayer SDL3_symbol_SDL_GetRenderMetalLayer_is_marked_unused +#ifdef SDL_GetRenderMetalCommandEncoder +#undef SDL_GetRenderMetalCommandEncoder +#endif // SDL_GetRenderMetalCommandEncoder +#define SDL_GetRenderMetalCommandEncoder SDL3_symbol_SDL_GetRenderMetalCommandEncoder_is_marked_unused +#ifdef SDL_SetRenderVSync +#undef SDL_SetRenderVSync +#endif // SDL_SetRenderVSync +#define SDL_SetRenderVSync SDL3_symbol_SDL_SetRenderVSync_is_marked_unused +#ifdef SDL_GetRenderVSync +#undef SDL_GetRenderVSync +#endif // SDL_GetRenderVSync +#define SDL_GetRenderVSync SDL3_symbol_SDL_GetRenderVSync_is_marked_unused +#ifdef SDL_RenderDebugText +#undef SDL_RenderDebugText +#endif // SDL_RenderDebugText +#define SDL_RenderDebugText SDL3_symbol_SDL_RenderDebugText_is_marked_unused +#ifdef SDL_RenderDebugTextFormat +#undef SDL_RenderDebugTextFormat +#endif // SDL_RenderDebugTextFormat +#define SDL_RenderDebugTextFormat SDL3_symbol_SDL_RenderDebugTextFormat_is_marked_unused +#ifdef SDL_SetDefaultTextureScaleMode +#undef SDL_SetDefaultTextureScaleMode +#endif // SDL_SetDefaultTextureScaleMode +#define SDL_SetDefaultTextureScaleMode SDL3_symbol_SDL_SetDefaultTextureScaleMode_is_marked_unused +#ifdef SDL_GetDefaultTextureScaleMode +#undef SDL_GetDefaultTextureScaleMode +#endif // SDL_GetDefaultTextureScaleMode +#define SDL_GetDefaultTextureScaleMode SDL3_symbol_SDL_GetDefaultTextureScaleMode_is_marked_unused +#ifdef SDL_CreateGPURenderState +#undef SDL_CreateGPURenderState +#endif // SDL_CreateGPURenderState +#define SDL_CreateGPURenderState SDL3_symbol_SDL_CreateGPURenderState_is_marked_unused +#ifdef SDL_SetGPURenderStateFragmentUniforms +#undef SDL_SetGPURenderStateFragmentUniforms +#endif // SDL_SetGPURenderStateFragmentUniforms +#define SDL_SetGPURenderStateFragmentUniforms SDL3_symbol_SDL_SetGPURenderStateFragmentUniforms_is_marked_unused +#ifdef SDL_SetGPURenderState +#undef SDL_SetGPURenderState +#endif // SDL_SetGPURenderState +#define SDL_SetGPURenderState SDL3_symbol_SDL_SetGPURenderState_is_marked_unused +#ifdef SDL_DestroyGPURenderState +#undef SDL_DestroyGPURenderState +#endif // SDL_DestroyGPURenderState +#define SDL_DestroyGPURenderState SDL3_symbol_SDL_DestroyGPURenderState_is_marked_unused +#ifdef SDL_GetSensors +#undef SDL_GetSensors +#endif // SDL_GetSensors +#define SDL_GetSensors SDL3_symbol_SDL_GetSensors_is_marked_unused +#ifdef SDL_GetSensorNameForID +#undef SDL_GetSensorNameForID +#endif // SDL_GetSensorNameForID +#define SDL_GetSensorNameForID SDL3_symbol_SDL_GetSensorNameForID_is_marked_unused +#ifdef SDL_GetSensorTypeForID +#undef SDL_GetSensorTypeForID +#endif // SDL_GetSensorTypeForID +#define SDL_GetSensorTypeForID SDL3_symbol_SDL_GetSensorTypeForID_is_marked_unused +#ifdef SDL_GetSensorNonPortableTypeForID +#undef SDL_GetSensorNonPortableTypeForID +#endif // SDL_GetSensorNonPortableTypeForID +#define SDL_GetSensorNonPortableTypeForID SDL3_symbol_SDL_GetSensorNonPortableTypeForID_is_marked_unused +#ifdef SDL_OpenSensor +#undef SDL_OpenSensor +#endif // SDL_OpenSensor +#define SDL_OpenSensor SDL3_symbol_SDL_OpenSensor_is_marked_unused +#ifdef SDL_GetSensorFromID +#undef SDL_GetSensorFromID +#endif // SDL_GetSensorFromID +#define SDL_GetSensorFromID SDL3_symbol_SDL_GetSensorFromID_is_marked_unused +#ifdef SDL_GetSensorProperties +#undef SDL_GetSensorProperties +#endif // SDL_GetSensorProperties +#define SDL_GetSensorProperties SDL3_symbol_SDL_GetSensorProperties_is_marked_unused +#ifdef SDL_GetSensorName +#undef SDL_GetSensorName +#endif // SDL_GetSensorName +#define SDL_GetSensorName SDL3_symbol_SDL_GetSensorName_is_marked_unused +#ifdef SDL_GetSensorType +#undef SDL_GetSensorType +#endif // SDL_GetSensorType +#define SDL_GetSensorType SDL3_symbol_SDL_GetSensorType_is_marked_unused +#ifdef SDL_GetSensorNonPortableType +#undef SDL_GetSensorNonPortableType +#endif // SDL_GetSensorNonPortableType +#define SDL_GetSensorNonPortableType SDL3_symbol_SDL_GetSensorNonPortableType_is_marked_unused +#ifdef SDL_GetSensorID +#undef SDL_GetSensorID +#endif // SDL_GetSensorID +#define SDL_GetSensorID SDL3_symbol_SDL_GetSensorID_is_marked_unused +#ifdef SDL_GetSensorData +#undef SDL_GetSensorData +#endif // SDL_GetSensorData +#define SDL_GetSensorData SDL3_symbol_SDL_GetSensorData_is_marked_unused +#ifdef SDL_CloseSensor +#undef SDL_CloseSensor +#endif // SDL_CloseSensor +#define SDL_CloseSensor SDL3_symbol_SDL_CloseSensor_is_marked_unused +#ifdef SDL_UpdateSensors +#undef SDL_UpdateSensors +#endif // SDL_UpdateSensors +#define SDL_UpdateSensors SDL3_symbol_SDL_UpdateSensors_is_marked_unused +#ifdef SDL_malloc +#undef SDL_malloc +#endif // SDL_malloc +#define SDL_malloc SDL3.SDL_malloc_symbol +#ifdef SDL_calloc +#undef SDL_calloc +#endif // SDL_calloc +#define SDL_calloc SDL3.SDL_calloc_symbol +#ifdef SDL_realloc +#undef SDL_realloc +#endif // SDL_realloc +#define SDL_realloc SDL3_symbol_SDL_realloc_is_marked_unused +#ifdef SDL_free +#undef SDL_free +#endif // SDL_free +#define SDL_free SDL3.SDL_free_symbol +#ifdef SDL_GetOriginalMemoryFunctions +#undef SDL_GetOriginalMemoryFunctions +#endif // SDL_GetOriginalMemoryFunctions +#define SDL_GetOriginalMemoryFunctions SDL3_symbol_SDL_GetOriginalMemoryFunctions_is_marked_unused +#ifdef SDL_GetMemoryFunctions +#undef SDL_GetMemoryFunctions +#endif // SDL_GetMemoryFunctions +#define SDL_GetMemoryFunctions SDL3_symbol_SDL_GetMemoryFunctions_is_marked_unused +#ifdef SDL_SetMemoryFunctions +#undef SDL_SetMemoryFunctions +#endif // SDL_SetMemoryFunctions +#define SDL_SetMemoryFunctions SDL3_symbol_SDL_SetMemoryFunctions_is_marked_unused +#ifdef SDL_aligned_alloc +#undef SDL_aligned_alloc +#endif // SDL_aligned_alloc +#define SDL_aligned_alloc SDL3_symbol_SDL_aligned_alloc_is_marked_unused +#ifdef SDL_aligned_free +#undef SDL_aligned_free +#endif // SDL_aligned_free +#define SDL_aligned_free SDL3_symbol_SDL_aligned_free_is_marked_unused +#ifdef SDL_GetNumAllocations +#undef SDL_GetNumAllocations +#endif // SDL_GetNumAllocations +#define SDL_GetNumAllocations SDL3_symbol_SDL_GetNumAllocations_is_marked_unused +#ifdef SDL_GetEnvironment +#undef SDL_GetEnvironment +#endif // SDL_GetEnvironment +#define SDL_GetEnvironment SDL3_symbol_SDL_GetEnvironment_is_marked_unused +#ifdef SDL_CreateEnvironment +#undef SDL_CreateEnvironment +#endif // SDL_CreateEnvironment +#define SDL_CreateEnvironment SDL3_symbol_SDL_CreateEnvironment_is_marked_unused +#ifdef SDL_GetEnvironmentVariable +#undef SDL_GetEnvironmentVariable +#endif // SDL_GetEnvironmentVariable +#define SDL_GetEnvironmentVariable SDL3_symbol_SDL_GetEnvironmentVariable_is_marked_unused +#ifdef SDL_GetEnvironmentVariables +#undef SDL_GetEnvironmentVariables +#endif // SDL_GetEnvironmentVariables +#define SDL_GetEnvironmentVariables SDL3_symbol_SDL_GetEnvironmentVariables_is_marked_unused +#ifdef SDL_SetEnvironmentVariable +#undef SDL_SetEnvironmentVariable +#endif // SDL_SetEnvironmentVariable +#define SDL_SetEnvironmentVariable SDL3_symbol_SDL_SetEnvironmentVariable_is_marked_unused +#ifdef SDL_UnsetEnvironmentVariable +#undef SDL_UnsetEnvironmentVariable +#endif // SDL_UnsetEnvironmentVariable +#define SDL_UnsetEnvironmentVariable SDL3_symbol_SDL_UnsetEnvironmentVariable_is_marked_unused +#ifdef SDL_DestroyEnvironment +#undef SDL_DestroyEnvironment +#endif // SDL_DestroyEnvironment +#define SDL_DestroyEnvironment SDL3_symbol_SDL_DestroyEnvironment_is_marked_unused +#ifdef SDL_getenv +#undef SDL_getenv +#endif // SDL_getenv +#define SDL_getenv SDL3_symbol_SDL_getenv_is_marked_unused +#ifdef SDL_getenv_unsafe +#undef SDL_getenv_unsafe +#endif // SDL_getenv_unsafe +#define SDL_getenv_unsafe SDL3_symbol_SDL_getenv_unsafe_is_marked_unused +#ifdef SDL_setenv_unsafe +#undef SDL_setenv_unsafe +#endif // SDL_setenv_unsafe +#define SDL_setenv_unsafe SDL3_symbol_SDL_setenv_unsafe_is_marked_unused +#ifdef SDL_unsetenv_unsafe +#undef SDL_unsetenv_unsafe +#endif // SDL_unsetenv_unsafe +#define SDL_unsetenv_unsafe SDL3_symbol_SDL_unsetenv_unsafe_is_marked_unused +#ifdef SDL_qsort +#undef SDL_qsort +#endif // SDL_qsort +#define SDL_qsort SDL3_symbol_SDL_qsort_is_marked_unused +#ifdef SDL_bsearch +#undef SDL_bsearch +#endif // SDL_bsearch +#define SDL_bsearch SDL3_symbol_SDL_bsearch_is_marked_unused +#ifdef SDL_qsort_r +#undef SDL_qsort_r +#endif // SDL_qsort_r +#define SDL_qsort_r SDL3_symbol_SDL_qsort_r_is_marked_unused +#ifdef SDL_bsearch_r +#undef SDL_bsearch_r +#endif // SDL_bsearch_r +#define SDL_bsearch_r SDL3_symbol_SDL_bsearch_r_is_marked_unused +#ifdef SDL_abs +#undef SDL_abs +#endif // SDL_abs +#define SDL_abs SDL3_symbol_SDL_abs_is_marked_unused +#ifdef SDL_isalpha +#undef SDL_isalpha +#endif // SDL_isalpha +#define SDL_isalpha SDL3_symbol_SDL_isalpha_is_marked_unused +#ifdef SDL_isalnum +#undef SDL_isalnum +#endif // SDL_isalnum +#define SDL_isalnum SDL3_symbol_SDL_isalnum_is_marked_unused +#ifdef SDL_isblank +#undef SDL_isblank +#endif // SDL_isblank +#define SDL_isblank SDL3_symbol_SDL_isblank_is_marked_unused +#ifdef SDL_iscntrl +#undef SDL_iscntrl +#endif // SDL_iscntrl +#define SDL_iscntrl SDL3_symbol_SDL_iscntrl_is_marked_unused +#ifdef SDL_isdigit +#undef SDL_isdigit +#endif // SDL_isdigit +#define SDL_isdigit SDL3.SDL_isdigit_symbol +#ifdef SDL_isxdigit +#undef SDL_isxdigit +#endif // SDL_isxdigit +#define SDL_isxdigit SDL3_symbol_SDL_isxdigit_is_marked_unused +#ifdef SDL_ispunct +#undef SDL_ispunct +#endif // SDL_ispunct +#define SDL_ispunct SDL3_symbol_SDL_ispunct_is_marked_unused +#ifdef SDL_isspace +#undef SDL_isspace +#endif // SDL_isspace +#define SDL_isspace SDL3_symbol_SDL_isspace_is_marked_unused +#ifdef SDL_isupper +#undef SDL_isupper +#endif // SDL_isupper +#define SDL_isupper SDL3_symbol_SDL_isupper_is_marked_unused +#ifdef SDL_islower +#undef SDL_islower +#endif // SDL_islower +#define SDL_islower SDL3_symbol_SDL_islower_is_marked_unused +#ifdef SDL_isprint +#undef SDL_isprint +#endif // SDL_isprint +#define SDL_isprint SDL3_symbol_SDL_isprint_is_marked_unused +#ifdef SDL_isgraph +#undef SDL_isgraph +#endif // SDL_isgraph +#define SDL_isgraph SDL3_symbol_SDL_isgraph_is_marked_unused +#ifdef SDL_toupper +#undef SDL_toupper +#endif // SDL_toupper +#define SDL_toupper SDL3_symbol_SDL_toupper_is_marked_unused +#ifdef SDL_tolower +#undef SDL_tolower +#endif // SDL_tolower +#define SDL_tolower SDL3.SDL_tolower_symbol +#ifdef SDL_crc16 +#undef SDL_crc16 +#endif // SDL_crc16 +#define SDL_crc16 SDL3_symbol_SDL_crc16_is_marked_unused +#ifdef SDL_crc32 +#undef SDL_crc32 +#endif // SDL_crc32 +#define SDL_crc32 SDL3_symbol_SDL_crc32_is_marked_unused +#ifdef SDL_murmur3_32 +#undef SDL_murmur3_32 +#endif // SDL_murmur3_32 +#define SDL_murmur3_32 SDL3_symbol_SDL_murmur3_32_is_marked_unused +#ifndef SDL_SLOW_MEMCPY +#ifdef SDL_memcpy +#undef SDL_memcpy +#endif // SDL_memcpy +#define SDL_memcpy SDL3.SDL_memcpy_symbol +#endif // SDL_SLOW_MEMCPY +#ifndef SDL_SLOW_MEMMOVE +#ifdef SDL_memmove +#undef SDL_memmove +#endif // SDL_memmove +#define SDL_memmove SDL3_symbol_SDL_memmove_is_marked_unused +#endif // SDL_SLOW_MEMMOVE +#ifndef SDL_SLOW_MEMSET +#ifdef SDL_memset +#undef SDL_memset +#endif // SDL_memset +#define SDL_memset SDL3.SDL_memset_symbol +#endif // SDL_SLOW_MEMSET +#ifdef SDL_memset4 +#undef SDL_memset4 +#endif // SDL_memset4 +#define SDL_memset4 SDL3_symbol_SDL_memset4_is_marked_unused +#ifdef SDL_memcmp +#undef SDL_memcmp +#endif // SDL_memcmp +#define SDL_memcmp SDL3.SDL_memcmp_symbol +#ifdef SDL_wcslen +#undef SDL_wcslen +#endif // SDL_wcslen +#define SDL_wcslen SDL3_symbol_SDL_wcslen_is_marked_unused +#ifdef SDL_wcsnlen +#undef SDL_wcsnlen +#endif // SDL_wcsnlen +#define SDL_wcsnlen SDL3_symbol_SDL_wcsnlen_is_marked_unused +#ifdef SDL_wcslcpy +#undef SDL_wcslcpy +#endif // SDL_wcslcpy +#define SDL_wcslcpy SDL3_symbol_SDL_wcslcpy_is_marked_unused +#ifdef SDL_wcslcat +#undef SDL_wcslcat +#endif // SDL_wcslcat +#define SDL_wcslcat SDL3_symbol_SDL_wcslcat_is_marked_unused +#ifdef SDL_wcsdup +#undef SDL_wcsdup +#endif // SDL_wcsdup +#define SDL_wcsdup SDL3_symbol_SDL_wcsdup_is_marked_unused +#ifdef SDL_wcsstr +#undef SDL_wcsstr +#endif // SDL_wcsstr +#define SDL_wcsstr SDL3_symbol_SDL_wcsstr_is_marked_unused +#ifdef SDL_wcsnstr +#undef SDL_wcsnstr +#endif // SDL_wcsnstr +#define SDL_wcsnstr SDL3_symbol_SDL_wcsnstr_is_marked_unused +#ifdef SDL_wcscmp +#undef SDL_wcscmp +#endif // SDL_wcscmp +#define SDL_wcscmp SDL3_symbol_SDL_wcscmp_is_marked_unused +#ifdef SDL_wcsncmp +#undef SDL_wcsncmp +#endif // SDL_wcsncmp +#define SDL_wcsncmp SDL3_symbol_SDL_wcsncmp_is_marked_unused +#ifdef SDL_wcscasecmp +#undef SDL_wcscasecmp +#endif // SDL_wcscasecmp +#define SDL_wcscasecmp SDL3_symbol_SDL_wcscasecmp_is_marked_unused +#ifdef SDL_wcsncasecmp +#undef SDL_wcsncasecmp +#endif // SDL_wcsncasecmp +#define SDL_wcsncasecmp SDL3_symbol_SDL_wcsncasecmp_is_marked_unused +#ifdef SDL_wcstol +#undef SDL_wcstol +#endif // SDL_wcstol +#define SDL_wcstol SDL3_symbol_SDL_wcstol_is_marked_unused +#ifdef SDL_strlen +#undef SDL_strlen +#endif // SDL_strlen +#define SDL_strlen SDL3.SDL_strlen_symbol +#ifdef SDL_strnlen +#undef SDL_strnlen +#endif // SDL_strnlen +#define SDL_strnlen SDL3_symbol_SDL_strnlen_is_marked_unused +#ifdef SDL_strlcpy +#undef SDL_strlcpy +#endif // SDL_strlcpy +#define SDL_strlcpy SDL3.SDL_strlcpy_symbol +#ifdef SDL_utf8strlcpy +#undef SDL_utf8strlcpy +#endif // SDL_utf8strlcpy +#define SDL_utf8strlcpy SDL3_symbol_SDL_utf8strlcpy_is_marked_unused +#ifdef SDL_strlcat +#undef SDL_strlcat +#endif // SDL_strlcat +#define SDL_strlcat SDL3_symbol_SDL_strlcat_is_marked_unused +#ifdef SDL_strdup +#undef SDL_strdup +#endif // SDL_strdup +#define SDL_strdup SDL3.SDL_strdup_symbol +#ifdef SDL_strndup +#undef SDL_strndup +#endif // SDL_strndup +#define SDL_strndup SDL3_symbol_SDL_strndup_is_marked_unused +#ifdef SDL_strrev +#undef SDL_strrev +#endif // SDL_strrev +#define SDL_strrev SDL3_symbol_SDL_strrev_is_marked_unused +#ifdef SDL_strupr +#undef SDL_strupr +#endif // SDL_strupr +#define SDL_strupr SDL3.SDL_strupr_symbol +#ifdef SDL_strlwr +#undef SDL_strlwr +#endif // SDL_strlwr +#define SDL_strlwr SDL3.SDL_strlwr_symbol +#ifdef SDL_strchr +#undef SDL_strchr +#endif // SDL_strchr +#define SDL_strchr SDL3.SDL_strchr_symbol +#ifdef SDL_strrchr +#undef SDL_strrchr +#endif // SDL_strrchr +#define SDL_strrchr SDL3_symbol_SDL_strrchr_is_marked_unused +#ifdef SDL_strstr +#undef SDL_strstr +#endif // SDL_strstr +#define SDL_strstr SDL3.SDL_strstr_symbol +#ifdef SDL_strnstr +#undef SDL_strnstr +#endif // SDL_strnstr +#define SDL_strnstr SDL3_symbol_SDL_strnstr_is_marked_unused +#ifdef SDL_strcasestr +#undef SDL_strcasestr +#endif // SDL_strcasestr +#define SDL_strcasestr SDL3_symbol_SDL_strcasestr_is_marked_unused +#ifdef SDL_strtok_r +#undef SDL_strtok_r +#endif // SDL_strtok_r +#define SDL_strtok_r SDL3.SDL_strtok_r_symbol +#ifdef SDL_utf8strlen +#undef SDL_utf8strlen +#endif // SDL_utf8strlen +#define SDL_utf8strlen SDL3_symbol_SDL_utf8strlen_is_marked_unused +#ifdef SDL_utf8strnlen +#undef SDL_utf8strnlen +#endif // SDL_utf8strnlen +#define SDL_utf8strnlen SDL3_symbol_SDL_utf8strnlen_is_marked_unused +#ifdef SDL_itoa +#undef SDL_itoa +#endif // SDL_itoa +#define SDL_itoa SDL3.SDL_itoa_symbol +#ifdef SDL_uitoa +#undef SDL_uitoa +#endif // SDL_uitoa +#define SDL_uitoa SDL3_symbol_SDL_uitoa_is_marked_unused +#ifdef SDL_ltoa +#undef SDL_ltoa +#endif // SDL_ltoa +#define SDL_ltoa SDL3_symbol_SDL_ltoa_is_marked_unused +#ifdef SDL_ultoa +#undef SDL_ultoa +#endif // SDL_ultoa +#define SDL_ultoa SDL3_symbol_SDL_ultoa_is_marked_unused +#ifdef SDL_lltoa +#undef SDL_lltoa +#endif // SDL_lltoa +#define SDL_lltoa SDL3_symbol_SDL_lltoa_is_marked_unused +#ifdef SDL_ulltoa +#undef SDL_ulltoa +#endif // SDL_ulltoa +#define SDL_ulltoa SDL3_symbol_SDL_ulltoa_is_marked_unused +#ifdef SDL_atoi +#undef SDL_atoi +#endif // SDL_atoi +#define SDL_atoi SDL3_symbol_SDL_atoi_is_marked_unused +#ifdef SDL_atof +#undef SDL_atof +#endif // SDL_atof +#define SDL_atof SDL3_symbol_SDL_atof_is_marked_unused +#ifdef SDL_strtol +#undef SDL_strtol +#endif // SDL_strtol +#define SDL_strtol SDL3_symbol_SDL_strtol_is_marked_unused +#ifdef SDL_strtoul +#undef SDL_strtoul +#endif // SDL_strtoul +#define SDL_strtoul SDL3_symbol_SDL_strtoul_is_marked_unused +#ifdef SDL_strtoll +#undef SDL_strtoll +#endif // SDL_strtoll +#define SDL_strtoll SDL3_symbol_SDL_strtoll_is_marked_unused +#ifdef SDL_strtoull +#undef SDL_strtoull +#endif // SDL_strtoull +#define SDL_strtoull SDL3_symbol_SDL_strtoull_is_marked_unused +#ifdef SDL_strtod +#undef SDL_strtod +#endif // SDL_strtod +#define SDL_strtod SDL3_symbol_SDL_strtod_is_marked_unused +#ifdef SDL_strcmp +#undef SDL_strcmp +#endif // SDL_strcmp +#define SDL_strcmp SDL3_symbol_SDL_strcmp_is_marked_unused +#ifdef SDL_strncmp +#undef SDL_strncmp +#endif // SDL_strncmp +#define SDL_strncmp SDL3.SDL_strncmp_symbol +#ifdef SDL_strcasecmp +#undef SDL_strcasecmp +#endif // SDL_strcasecmp +#define SDL_strcasecmp SDL3.SDL_strcasecmp_symbol +#ifdef SDL_strncasecmp +#undef SDL_strncasecmp +#endif // SDL_strncasecmp +#define SDL_strncasecmp SDL3.SDL_strncasecmp_symbol +#ifdef SDL_strpbrk +#undef SDL_strpbrk +#endif // SDL_strpbrk +#define SDL_strpbrk SDL3_symbol_SDL_strpbrk_is_marked_unused +#ifdef SDL_StepUTF8 +#undef SDL_StepUTF8 +#endif // SDL_StepUTF8 +#define SDL_StepUTF8 SDL3_symbol_SDL_StepUTF8_is_marked_unused +#ifdef SDL_StepBackUTF8 +#undef SDL_StepBackUTF8 +#endif // SDL_StepBackUTF8 +#define SDL_StepBackUTF8 SDL3_symbol_SDL_StepBackUTF8_is_marked_unused +#ifdef SDL_UCS4ToUTF8 +#undef SDL_UCS4ToUTF8 +#endif // SDL_UCS4ToUTF8 +#define SDL_UCS4ToUTF8 SDL3_symbol_SDL_UCS4ToUTF8_is_marked_unused +#ifdef SDL_sscanf +#undef SDL_sscanf +#endif // SDL_sscanf +#define SDL_sscanf SDL3_symbol_SDL_sscanf_is_marked_unused +#ifdef SDL_vsscanf +#undef SDL_vsscanf +#endif // SDL_vsscanf +#define SDL_vsscanf SDL3.SDL_vsscanf_symbol +#ifdef SDL_snprintf +#undef SDL_snprintf +#endif // SDL_snprintf +#define SDL_snprintf SDL3.SDL_snprintf_symbol +#ifdef SDL_swprintf +#undef SDL_swprintf +#endif // SDL_swprintf +#define SDL_swprintf SDL3_symbol_SDL_swprintf_is_marked_unused +#ifdef SDL_vsnprintf +#undef SDL_vsnprintf +#endif // SDL_vsnprintf +#define SDL_vsnprintf SDL3.SDL_vsnprintf_symbol +#ifdef SDL_vswprintf +#undef SDL_vswprintf +#endif // SDL_vswprintf +#define SDL_vswprintf SDL3_symbol_SDL_vswprintf_is_marked_unused +#ifdef SDL_asprintf +#undef SDL_asprintf +#endif // SDL_asprintf +#define SDL_asprintf SDL3_symbol_SDL_asprintf_is_marked_unused +#ifdef SDL_vasprintf +#undef SDL_vasprintf +#endif // SDL_vasprintf +#define SDL_vasprintf SDL3_symbol_SDL_vasprintf_is_marked_unused +#ifdef SDL_srand +#undef SDL_srand +#endif // SDL_srand +#define SDL_srand SDL3_symbol_SDL_srand_is_marked_unused +#ifdef SDL_rand +#undef SDL_rand +#endif // SDL_rand +#define SDL_rand SDL3.SDL_rand_symbol +#ifdef SDL_randf +#undef SDL_randf +#endif // SDL_randf +#define SDL_randf SDL3.SDL_randf_symbol +#ifdef SDL_rand_bits +#undef SDL_rand_bits +#endif // SDL_rand_bits +#define SDL_rand_bits SDL3_symbol_SDL_rand_bits_is_marked_unused +#ifdef SDL_rand_r +#undef SDL_rand_r +#endif // SDL_rand_r +#define SDL_rand_r SDL3_symbol_SDL_rand_r_is_marked_unused +#ifdef SDL_randf_r +#undef SDL_randf_r +#endif // SDL_randf_r +#define SDL_randf_r SDL3_symbol_SDL_randf_r_is_marked_unused +#ifdef SDL_rand_bits_r +#undef SDL_rand_bits_r +#endif // SDL_rand_bits_r +#define SDL_rand_bits_r SDL3_symbol_SDL_rand_bits_r_is_marked_unused +#ifdef SDL_acos +#undef SDL_acos +#endif // SDL_acos +#define SDL_acos SDL3_symbol_SDL_acos_is_marked_unused +#ifdef SDL_acosf +#undef SDL_acosf +#endif // SDL_acosf +#define SDL_acosf SDL3_symbol_SDL_acosf_is_marked_unused +#ifdef SDL_asin +#undef SDL_asin +#endif // SDL_asin +#define SDL_asin SDL3_symbol_SDL_asin_is_marked_unused +#ifdef SDL_asinf +#undef SDL_asinf +#endif // SDL_asinf +#define SDL_asinf SDL3_symbol_SDL_asinf_is_marked_unused +#ifdef SDL_atan +#undef SDL_atan +#endif // SDL_atan +#define SDL_atan SDL3_symbol_SDL_atan_is_marked_unused +#ifdef SDL_atanf +#undef SDL_atanf +#endif // SDL_atanf +#define SDL_atanf SDL3_symbol_SDL_atanf_is_marked_unused +#ifdef SDL_atan2 +#undef SDL_atan2 +#endif // SDL_atan2 +#define SDL_atan2 SDL3_symbol_SDL_atan2_is_marked_unused +#ifdef SDL_atan2f +#undef SDL_atan2f +#endif // SDL_atan2f +#define SDL_atan2f SDL3_symbol_SDL_atan2f_is_marked_unused +#ifdef SDL_ceil +#undef SDL_ceil +#endif // SDL_ceil +#define SDL_ceil SDL3_symbol_SDL_ceil_is_marked_unused +#ifdef SDL_ceilf +#undef SDL_ceilf +#endif // SDL_ceilf +#define SDL_ceilf SDL3_symbol_SDL_ceilf_is_marked_unused +#ifdef SDL_copysign +#undef SDL_copysign +#endif // SDL_copysign +#define SDL_copysign SDL3_symbol_SDL_copysign_is_marked_unused +#ifdef SDL_copysignf +#undef SDL_copysignf +#endif // SDL_copysignf +#define SDL_copysignf SDL3_symbol_SDL_copysignf_is_marked_unused +#ifdef SDL_cos +#undef SDL_cos +#endif // SDL_cos +#define SDL_cos SDL3_symbol_SDL_cos_is_marked_unused +#ifdef SDL_cosf +#undef SDL_cosf +#endif // SDL_cosf +#define SDL_cosf SDL3_symbol_SDL_cosf_is_marked_unused +#ifdef SDL_exp +#undef SDL_exp +#endif // SDL_exp +#define SDL_exp SDL3_symbol_SDL_exp_is_marked_unused +#ifdef SDL_expf +#undef SDL_expf +#endif // SDL_expf +#define SDL_expf SDL3_symbol_SDL_expf_is_marked_unused +#ifdef SDL_fabs +#undef SDL_fabs +#endif // SDL_fabs +#define SDL_fabs SDL3_symbol_SDL_fabs_is_marked_unused +#ifdef SDL_fabsf +#undef SDL_fabsf +#endif // SDL_fabsf +#define SDL_fabsf SDL3_symbol_SDL_fabsf_is_marked_unused +#ifdef SDL_floor +#undef SDL_floor +#endif // SDL_floor +#define SDL_floor SDL3_symbol_SDL_floor_is_marked_unused +#ifdef SDL_floorf +#undef SDL_floorf +#endif // SDL_floorf +#define SDL_floorf SDL3_symbol_SDL_floorf_is_marked_unused +#ifdef SDL_trunc +#undef SDL_trunc +#endif // SDL_trunc +#define SDL_trunc SDL3_symbol_SDL_trunc_is_marked_unused +#ifdef SDL_truncf +#undef SDL_truncf +#endif // SDL_truncf +#define SDL_truncf SDL3_symbol_SDL_truncf_is_marked_unused +#ifdef SDL_fmod +#undef SDL_fmod +#endif // SDL_fmod +#define SDL_fmod SDL3_symbol_SDL_fmod_is_marked_unused +#ifdef SDL_fmodf +#undef SDL_fmodf +#endif // SDL_fmodf +#define SDL_fmodf SDL3_symbol_SDL_fmodf_is_marked_unused +#ifdef SDL_isinf +#undef SDL_isinf +#endif // SDL_isinf +#define SDL_isinf SDL3_symbol_SDL_isinf_is_marked_unused +#ifdef SDL_isinff +#undef SDL_isinff +#endif // SDL_isinff +#define SDL_isinff SDL3_symbol_SDL_isinff_is_marked_unused +#ifdef SDL_isnan +#undef SDL_isnan +#endif // SDL_isnan +#define SDL_isnan SDL3_symbol_SDL_isnan_is_marked_unused +#ifdef SDL_isnanf +#undef SDL_isnanf +#endif // SDL_isnanf +#define SDL_isnanf SDL3_symbol_SDL_isnanf_is_marked_unused +#ifdef SDL_log +#undef SDL_log +#endif // SDL_log +#define SDL_log SDL3_symbol_SDL_log_is_marked_unused +#ifdef SDL_logf +#undef SDL_logf +#endif // SDL_logf +#define SDL_logf SDL3_symbol_SDL_logf_is_marked_unused +#ifdef SDL_log10 +#undef SDL_log10 +#endif // SDL_log10 +#define SDL_log10 SDL3_symbol_SDL_log10_is_marked_unused +#ifdef SDL_log10f +#undef SDL_log10f +#endif // SDL_log10f +#define SDL_log10f SDL3_symbol_SDL_log10f_is_marked_unused +#ifdef SDL_modf +#undef SDL_modf +#endif // SDL_modf +#define SDL_modf SDL3_symbol_SDL_modf_is_marked_unused +#ifdef SDL_modff +#undef SDL_modff +#endif // SDL_modff +#define SDL_modff SDL3_symbol_SDL_modff_is_marked_unused +#ifdef SDL_pow +#undef SDL_pow +#endif // SDL_pow +#define SDL_pow SDL3_symbol_SDL_pow_is_marked_unused +#ifdef SDL_powf +#undef SDL_powf +#endif // SDL_powf +#define SDL_powf SDL3_symbol_SDL_powf_is_marked_unused +#ifdef SDL_round +#undef SDL_round +#endif // SDL_round +#define SDL_round SDL3_symbol_SDL_round_is_marked_unused +#ifdef SDL_roundf +#undef SDL_roundf +#endif // SDL_roundf +#define SDL_roundf SDL3_symbol_SDL_roundf_is_marked_unused +#ifdef SDL_lround +#undef SDL_lround +#endif // SDL_lround +#define SDL_lround SDL3_symbol_SDL_lround_is_marked_unused +#ifdef SDL_lroundf +#undef SDL_lroundf +#endif // SDL_lroundf +#define SDL_lroundf SDL3_symbol_SDL_lroundf_is_marked_unused +#ifdef SDL_scalbn +#undef SDL_scalbn +#endif // SDL_scalbn +#define SDL_scalbn SDL3_symbol_SDL_scalbn_is_marked_unused +#ifdef SDL_scalbnf +#undef SDL_scalbnf +#endif // SDL_scalbnf +#define SDL_scalbnf SDL3_symbol_SDL_scalbnf_is_marked_unused +#ifdef SDL_sin +#undef SDL_sin +#endif // SDL_sin +#define SDL_sin SDL3_symbol_SDL_sin_is_marked_unused +#ifdef SDL_sinf +#undef SDL_sinf +#endif // SDL_sinf +#define SDL_sinf SDL3_symbol_SDL_sinf_is_marked_unused +#ifdef SDL_sqrt +#undef SDL_sqrt +#endif // SDL_sqrt +#define SDL_sqrt SDL3_symbol_SDL_sqrt_is_marked_unused +#ifdef SDL_sqrtf +#undef SDL_sqrtf +#endif // SDL_sqrtf +#define SDL_sqrtf SDL3_symbol_SDL_sqrtf_is_marked_unused +#ifdef SDL_tan +#undef SDL_tan +#endif // SDL_tan +#define SDL_tan SDL3_symbol_SDL_tan_is_marked_unused +#ifdef SDL_tanf +#undef SDL_tanf +#endif // SDL_tanf +#define SDL_tanf SDL3_symbol_SDL_tanf_is_marked_unused +#ifdef SDL_iconv_open +#undef SDL_iconv_open +#endif // SDL_iconv_open +#define SDL_iconv_open SDL3_symbol_SDL_iconv_open_is_marked_unused +#ifdef SDL_iconv_close +#undef SDL_iconv_close +#endif // SDL_iconv_close +#define SDL_iconv_close SDL3_symbol_SDL_iconv_close_is_marked_unused +#ifdef SDL_iconv +#undef SDL_iconv +#endif // SDL_iconv +#define SDL_iconv SDL3_symbol_SDL_iconv_is_marked_unused +#ifdef SDL_iconv_string +#undef SDL_iconv_string +#endif // SDL_iconv_string +#define SDL_iconv_string SDL3_symbol_SDL_iconv_string_is_marked_unused +#ifdef SDL_OpenTitleStorage +#undef SDL_OpenTitleStorage +#endif // SDL_OpenTitleStorage +#define SDL_OpenTitleStorage SDL3_symbol_SDL_OpenTitleStorage_is_marked_unused +#ifdef SDL_OpenUserStorage +#undef SDL_OpenUserStorage +#endif // SDL_OpenUserStorage +#define SDL_OpenUserStorage SDL3_symbol_SDL_OpenUserStorage_is_marked_unused +#ifdef SDL_OpenFileStorage +#undef SDL_OpenFileStorage +#endif // SDL_OpenFileStorage +#define SDL_OpenFileStorage SDL3_symbol_SDL_OpenFileStorage_is_marked_unused +#ifdef SDL_OpenStorage +#undef SDL_OpenStorage +#endif // SDL_OpenStorage +#define SDL_OpenStorage SDL3_symbol_SDL_OpenStorage_is_marked_unused +#ifdef SDL_CloseStorage +#undef SDL_CloseStorage +#endif // SDL_CloseStorage +#define SDL_CloseStorage SDL3_symbol_SDL_CloseStorage_is_marked_unused +#ifdef SDL_StorageReady +#undef SDL_StorageReady +#endif // SDL_StorageReady +#define SDL_StorageReady SDL3_symbol_SDL_StorageReady_is_marked_unused +#ifdef SDL_GetStorageFileSize +#undef SDL_GetStorageFileSize +#endif // SDL_GetStorageFileSize +#define SDL_GetStorageFileSize SDL3_symbol_SDL_GetStorageFileSize_is_marked_unused +#ifdef SDL_ReadStorageFile +#undef SDL_ReadStorageFile +#endif // SDL_ReadStorageFile +#define SDL_ReadStorageFile SDL3_symbol_SDL_ReadStorageFile_is_marked_unused +#ifdef SDL_WriteStorageFile +#undef SDL_WriteStorageFile +#endif // SDL_WriteStorageFile +#define SDL_WriteStorageFile SDL3_symbol_SDL_WriteStorageFile_is_marked_unused +#ifdef SDL_CreateStorageDirectory +#undef SDL_CreateStorageDirectory +#endif // SDL_CreateStorageDirectory +#define SDL_CreateStorageDirectory SDL3_symbol_SDL_CreateStorageDirectory_is_marked_unused +#ifdef SDL_EnumerateStorageDirectory +#undef SDL_EnumerateStorageDirectory +#endif // SDL_EnumerateStorageDirectory +#define SDL_EnumerateStorageDirectory SDL3_symbol_SDL_EnumerateStorageDirectory_is_marked_unused +#ifdef SDL_RemoveStoragePath +#undef SDL_RemoveStoragePath +#endif // SDL_RemoveStoragePath +#define SDL_RemoveStoragePath SDL3_symbol_SDL_RemoveStoragePath_is_marked_unused +#ifdef SDL_RenameStoragePath +#undef SDL_RenameStoragePath +#endif // SDL_RenameStoragePath +#define SDL_RenameStoragePath SDL3_symbol_SDL_RenameStoragePath_is_marked_unused +#ifdef SDL_CopyStorageFile +#undef SDL_CopyStorageFile +#endif // SDL_CopyStorageFile +#define SDL_CopyStorageFile SDL3_symbol_SDL_CopyStorageFile_is_marked_unused +#ifdef SDL_GetStoragePathInfo +#undef SDL_GetStoragePathInfo +#endif // SDL_GetStoragePathInfo +#define SDL_GetStoragePathInfo SDL3_symbol_SDL_GetStoragePathInfo_is_marked_unused +#ifdef SDL_GetStorageSpaceRemaining +#undef SDL_GetStorageSpaceRemaining +#endif // SDL_GetStorageSpaceRemaining +#define SDL_GetStorageSpaceRemaining SDL3_symbol_SDL_GetStorageSpaceRemaining_is_marked_unused +#ifdef SDL_GlobStorageDirectory +#undef SDL_GlobStorageDirectory +#endif // SDL_GlobStorageDirectory +#define SDL_GlobStorageDirectory SDL3_symbol_SDL_GlobStorageDirectory_is_marked_unused +#ifdef SDL_CreateSurface +#undef SDL_CreateSurface +#endif // SDL_CreateSurface +#define SDL_CreateSurface SDL3.SDL_CreateSurface_symbol +#ifdef SDL_CreateSurfaceFrom +#undef SDL_CreateSurfaceFrom +#endif // SDL_CreateSurfaceFrom +#define SDL_CreateSurfaceFrom SDL3.SDL_CreateSurfaceFrom_symbol +#ifdef SDL_DestroySurface +#undef SDL_DestroySurface +#endif // SDL_DestroySurface +#define SDL_DestroySurface SDL3.SDL_DestroySurface_symbol +#ifdef SDL_GetSurfaceProperties +#undef SDL_GetSurfaceProperties +#endif // SDL_GetSurfaceProperties +#define SDL_GetSurfaceProperties SDL3_symbol_SDL_GetSurfaceProperties_is_marked_unused +#ifdef SDL_SetSurfaceColorspace +#undef SDL_SetSurfaceColorspace +#endif // SDL_SetSurfaceColorspace +#define SDL_SetSurfaceColorspace SDL3_symbol_SDL_SetSurfaceColorspace_is_marked_unused +#ifdef SDL_GetSurfaceColorspace +#undef SDL_GetSurfaceColorspace +#endif // SDL_GetSurfaceColorspace +#define SDL_GetSurfaceColorspace SDL3_symbol_SDL_GetSurfaceColorspace_is_marked_unused +#ifdef SDL_CreateSurfacePalette +#undef SDL_CreateSurfacePalette +#endif // SDL_CreateSurfacePalette +#define SDL_CreateSurfacePalette SDL3_symbol_SDL_CreateSurfacePalette_is_marked_unused +#ifdef SDL_SetSurfacePalette +#undef SDL_SetSurfacePalette +#endif // SDL_SetSurfacePalette +#define SDL_SetSurfacePalette SDL3.SDL_SetSurfacePalette_symbol +#ifdef SDL_GetSurfacePalette +#undef SDL_GetSurfacePalette +#endif // SDL_GetSurfacePalette +#define SDL_GetSurfacePalette SDL3_symbol_SDL_GetSurfacePalette_is_marked_unused +#ifdef SDL_AddSurfaceAlternateImage +#undef SDL_AddSurfaceAlternateImage +#endif // SDL_AddSurfaceAlternateImage +#define SDL_AddSurfaceAlternateImage SDL3_symbol_SDL_AddSurfaceAlternateImage_is_marked_unused +#ifdef SDL_SurfaceHasAlternateImages +#undef SDL_SurfaceHasAlternateImages +#endif // SDL_SurfaceHasAlternateImages +#define SDL_SurfaceHasAlternateImages SDL3_symbol_SDL_SurfaceHasAlternateImages_is_marked_unused +#ifdef SDL_GetSurfaceImages +#undef SDL_GetSurfaceImages +#endif // SDL_GetSurfaceImages +#define SDL_GetSurfaceImages SDL3_symbol_SDL_GetSurfaceImages_is_marked_unused +#ifdef SDL_RemoveSurfaceAlternateImages +#undef SDL_RemoveSurfaceAlternateImages +#endif // SDL_RemoveSurfaceAlternateImages +#define SDL_RemoveSurfaceAlternateImages SDL3_symbol_SDL_RemoveSurfaceAlternateImages_is_marked_unused +#ifdef SDL_LockSurface +#undef SDL_LockSurface +#endif // SDL_LockSurface +#define SDL_LockSurface SDL3.SDL_LockSurface_symbol +#ifdef SDL_UnlockSurface +#undef SDL_UnlockSurface +#endif // SDL_UnlockSurface +#define SDL_UnlockSurface SDL3.SDL_UnlockSurface_symbol +#ifdef SDL_LoadSurface_IO +#undef SDL_LoadSurface_IO +#endif // SDL_LoadSurface_IO +#define SDL_LoadSurface_IO SDL3_symbol_SDL_LoadSurface_IO_is_marked_unused +#ifdef SDL_LoadSurface +#undef SDL_LoadSurface +#endif // SDL_LoadSurface +#define SDL_LoadSurface SDL3_symbol_SDL_LoadSurface_is_marked_unused +#ifdef SDL_LoadBMP_IO +#undef SDL_LoadBMP_IO +#endif // SDL_LoadBMP_IO +#define SDL_LoadBMP_IO SDL3.SDL_LoadBMP_IO_symbol +#ifdef SDL_LoadBMP +#undef SDL_LoadBMP +#endif // SDL_LoadBMP +#define SDL_LoadBMP SDL3.SDL_LoadBMP_symbol +#ifdef SDL_SaveBMP_IO +#undef SDL_SaveBMP_IO +#endif // SDL_SaveBMP_IO +#define SDL_SaveBMP_IO SDL3_symbol_SDL_SaveBMP_IO_is_marked_unused +#ifdef SDL_SaveBMP +#undef SDL_SaveBMP +#endif // SDL_SaveBMP +#define SDL_SaveBMP SDL3_symbol_SDL_SaveBMP_is_marked_unused +#ifdef SDL_LoadPNG_IO +#undef SDL_LoadPNG_IO +#endif // SDL_LoadPNG_IO +#define SDL_LoadPNG_IO SDL3_symbol_SDL_LoadPNG_IO_is_marked_unused +#ifdef SDL_LoadPNG +#undef SDL_LoadPNG +#endif // SDL_LoadPNG +#define SDL_LoadPNG SDL3_symbol_SDL_LoadPNG_is_marked_unused +#ifdef SDL_SavePNG_IO +#undef SDL_SavePNG_IO +#endif // SDL_SavePNG_IO +#define SDL_SavePNG_IO SDL3_symbol_SDL_SavePNG_IO_is_marked_unused +#ifdef SDL_SavePNG +#undef SDL_SavePNG +#endif // SDL_SavePNG +#define SDL_SavePNG SDL3_symbol_SDL_SavePNG_is_marked_unused +#ifdef SDL_SetSurfaceRLE +#undef SDL_SetSurfaceRLE +#endif // SDL_SetSurfaceRLE +#define SDL_SetSurfaceRLE SDL3_symbol_SDL_SetSurfaceRLE_is_marked_unused +#ifdef SDL_SurfaceHasRLE +#undef SDL_SurfaceHasRLE +#endif // SDL_SurfaceHasRLE +#define SDL_SurfaceHasRLE SDL3_symbol_SDL_SurfaceHasRLE_is_marked_unused +#ifdef SDL_SetSurfaceColorKey +#undef SDL_SetSurfaceColorKey +#endif // SDL_SetSurfaceColorKey +#define SDL_SetSurfaceColorKey SDL3.SDL_SetSurfaceColorKey_symbol +#ifdef SDL_SurfaceHasColorKey +#undef SDL_SurfaceHasColorKey +#endif // SDL_SurfaceHasColorKey +#define SDL_SurfaceHasColorKey SDL3_symbol_SDL_SurfaceHasColorKey_is_marked_unused +#ifdef SDL_GetSurfaceColorKey +#undef SDL_GetSurfaceColorKey +#endif // SDL_GetSurfaceColorKey +#define SDL_GetSurfaceColorKey SDL3_symbol_SDL_GetSurfaceColorKey_is_marked_unused +#ifdef SDL_SetSurfaceColorMod +#undef SDL_SetSurfaceColorMod +#endif // SDL_SetSurfaceColorMod +#define SDL_SetSurfaceColorMod SDL3_symbol_SDL_SetSurfaceColorMod_is_marked_unused +#ifdef SDL_GetSurfaceColorMod +#undef SDL_GetSurfaceColorMod +#endif // SDL_GetSurfaceColorMod +#define SDL_GetSurfaceColorMod SDL3_symbol_SDL_GetSurfaceColorMod_is_marked_unused +#ifdef SDL_SetSurfaceAlphaMod +#undef SDL_SetSurfaceAlphaMod +#endif // SDL_SetSurfaceAlphaMod +#define SDL_SetSurfaceAlphaMod SDL3_symbol_SDL_SetSurfaceAlphaMod_is_marked_unused +#ifdef SDL_GetSurfaceAlphaMod +#undef SDL_GetSurfaceAlphaMod +#endif // SDL_GetSurfaceAlphaMod +#define SDL_GetSurfaceAlphaMod SDL3_symbol_SDL_GetSurfaceAlphaMod_is_marked_unused +#ifdef SDL_SetSurfaceBlendMode +#undef SDL_SetSurfaceBlendMode +#endif // SDL_SetSurfaceBlendMode +#define SDL_SetSurfaceBlendMode SDL3_symbol_SDL_SetSurfaceBlendMode_is_marked_unused +#ifdef SDL_GetSurfaceBlendMode +#undef SDL_GetSurfaceBlendMode +#endif // SDL_GetSurfaceBlendMode +#define SDL_GetSurfaceBlendMode SDL3_symbol_SDL_GetSurfaceBlendMode_is_marked_unused +#ifdef SDL_SetSurfaceClipRect +#undef SDL_SetSurfaceClipRect +#endif // SDL_SetSurfaceClipRect +#define SDL_SetSurfaceClipRect SDL3_symbol_SDL_SetSurfaceClipRect_is_marked_unused +#ifdef SDL_GetSurfaceClipRect +#undef SDL_GetSurfaceClipRect +#endif // SDL_GetSurfaceClipRect +#define SDL_GetSurfaceClipRect SDL3_symbol_SDL_GetSurfaceClipRect_is_marked_unused +#ifdef SDL_FlipSurface +#undef SDL_FlipSurface +#endif // SDL_FlipSurface +#define SDL_FlipSurface SDL3_symbol_SDL_FlipSurface_is_marked_unused +#ifdef SDL_RotateSurface +#undef SDL_RotateSurface +#endif // SDL_RotateSurface +#define SDL_RotateSurface SDL3_symbol_SDL_RotateSurface_is_marked_unused +#ifdef SDL_DuplicateSurface +#undef SDL_DuplicateSurface +#endif // SDL_DuplicateSurface +#define SDL_DuplicateSurface SDL3_symbol_SDL_DuplicateSurface_is_marked_unused +#ifdef SDL_ScaleSurface +#undef SDL_ScaleSurface +#endif // SDL_ScaleSurface +#define SDL_ScaleSurface SDL3_symbol_SDL_ScaleSurface_is_marked_unused +#ifdef SDL_ConvertSurface +#undef SDL_ConvertSurface +#endif // SDL_ConvertSurface +#define SDL_ConvertSurface SDL3.SDL_ConvertSurface_symbol +#ifdef SDL_ConvertSurfaceAndColorspace +#undef SDL_ConvertSurfaceAndColorspace +#endif // SDL_ConvertSurfaceAndColorspace +#define SDL_ConvertSurfaceAndColorspace SDL3_symbol_SDL_ConvertSurfaceAndColorspace_is_marked_unused +#ifdef SDL_ConvertPixels +#undef SDL_ConvertPixels +#endif // SDL_ConvertPixels +#define SDL_ConvertPixels SDL3_symbol_SDL_ConvertPixels_is_marked_unused +#ifdef SDL_ConvertPixelsAndColorspace +#undef SDL_ConvertPixelsAndColorspace +#endif // SDL_ConvertPixelsAndColorspace +#define SDL_ConvertPixelsAndColorspace SDL3_symbol_SDL_ConvertPixelsAndColorspace_is_marked_unused +#ifdef SDL_PremultiplyAlpha +#undef SDL_PremultiplyAlpha +#endif // SDL_PremultiplyAlpha +#define SDL_PremultiplyAlpha SDL3_symbol_SDL_PremultiplyAlpha_is_marked_unused +#ifdef SDL_PremultiplySurfaceAlpha +#undef SDL_PremultiplySurfaceAlpha +#endif // SDL_PremultiplySurfaceAlpha +#define SDL_PremultiplySurfaceAlpha SDL3_symbol_SDL_PremultiplySurfaceAlpha_is_marked_unused +#ifdef SDL_ClearSurface +#undef SDL_ClearSurface +#endif // SDL_ClearSurface +#define SDL_ClearSurface SDL3_symbol_SDL_ClearSurface_is_marked_unused +#ifdef SDL_FillSurfaceRect +#undef SDL_FillSurfaceRect +#endif // SDL_FillSurfaceRect +#define SDL_FillSurfaceRect SDL3.SDL_FillSurfaceRect_symbol +#ifdef SDL_FillSurfaceRects +#undef SDL_FillSurfaceRects +#endif // SDL_FillSurfaceRects +#define SDL_FillSurfaceRects SDL3_symbol_SDL_FillSurfaceRects_is_marked_unused +#ifdef SDL_BlitSurface +#undef SDL_BlitSurface +#endif // SDL_BlitSurface +#define SDL_BlitSurface SDL3.SDL_BlitSurface_symbol +#ifdef SDL_BlitSurfaceUnchecked +#undef SDL_BlitSurfaceUnchecked +#endif // SDL_BlitSurfaceUnchecked +#define SDL_BlitSurfaceUnchecked SDL3_symbol_SDL_BlitSurfaceUnchecked_is_marked_unused +#ifdef SDL_BlitSurfaceScaled +#undef SDL_BlitSurfaceScaled +#endif // SDL_BlitSurfaceScaled +#define SDL_BlitSurfaceScaled SDL3.SDL_BlitSurfaceScaled_symbol +#ifdef SDL_BlitSurfaceUncheckedScaled +#undef SDL_BlitSurfaceUncheckedScaled +#endif // SDL_BlitSurfaceUncheckedScaled +#define SDL_BlitSurfaceUncheckedScaled SDL3_symbol_SDL_BlitSurfaceUncheckedScaled_is_marked_unused +#ifdef SDL_StretchSurface +#undef SDL_StretchSurface +#endif // SDL_StretchSurface +#define SDL_StretchSurface SDL3_symbol_SDL_StretchSurface_is_marked_unused +#ifdef SDL_BlitSurfaceTiled +#undef SDL_BlitSurfaceTiled +#endif // SDL_BlitSurfaceTiled +#define SDL_BlitSurfaceTiled SDL3_symbol_SDL_BlitSurfaceTiled_is_marked_unused +#ifdef SDL_BlitSurfaceTiledWithScale +#undef SDL_BlitSurfaceTiledWithScale +#endif // SDL_BlitSurfaceTiledWithScale +#define SDL_BlitSurfaceTiledWithScale SDL3_symbol_SDL_BlitSurfaceTiledWithScale_is_marked_unused +#ifdef SDL_BlitSurface9Grid +#undef SDL_BlitSurface9Grid +#endif // SDL_BlitSurface9Grid +#define SDL_BlitSurface9Grid SDL3_symbol_SDL_BlitSurface9Grid_is_marked_unused +#ifdef SDL_MapSurfaceRGB +#undef SDL_MapSurfaceRGB +#endif // SDL_MapSurfaceRGB +#define SDL_MapSurfaceRGB SDL3_symbol_SDL_MapSurfaceRGB_is_marked_unused +#ifdef SDL_MapSurfaceRGBA +#undef SDL_MapSurfaceRGBA +#endif // SDL_MapSurfaceRGBA +#define SDL_MapSurfaceRGBA SDL3_symbol_SDL_MapSurfaceRGBA_is_marked_unused +#ifdef SDL_ReadSurfacePixel +#undef SDL_ReadSurfacePixel +#endif // SDL_ReadSurfacePixel +#define SDL_ReadSurfacePixel SDL3_symbol_SDL_ReadSurfacePixel_is_marked_unused +#ifdef SDL_ReadSurfacePixelFloat +#undef SDL_ReadSurfacePixelFloat +#endif // SDL_ReadSurfacePixelFloat +#define SDL_ReadSurfacePixelFloat SDL3_symbol_SDL_ReadSurfacePixelFloat_is_marked_unused +#ifdef SDL_WriteSurfacePixel +#undef SDL_WriteSurfacePixel +#endif // SDL_WriteSurfacePixel +#define SDL_WriteSurfacePixel SDL3_symbol_SDL_WriteSurfacePixel_is_marked_unused +#ifdef SDL_WriteSurfacePixelFloat +#undef SDL_WriteSurfacePixelFloat +#endif // SDL_WriteSurfacePixelFloat +#define SDL_WriteSurfacePixelFloat SDL3_symbol_SDL_WriteSurfacePixelFloat_is_marked_unused +#ifdef SDL_GetDirect3D9AdapterIndex +#undef SDL_GetDirect3D9AdapterIndex +#endif // SDL_GetDirect3D9AdapterIndex +#define SDL_GetDirect3D9AdapterIndex SDL3_symbol_SDL_GetDirect3D9AdapterIndex_is_marked_unused +#ifdef SDL_GetDXGIOutputInfo +#undef SDL_GetDXGIOutputInfo +#endif // SDL_GetDXGIOutputInfo +#define SDL_GetDXGIOutputInfo SDL3_symbol_SDL_GetDXGIOutputInfo_is_marked_unused +#ifdef SDL_SetX11EventHook +#undef SDL_SetX11EventHook +#endif // SDL_SetX11EventHook +#define SDL_SetX11EventHook SDL3_symbol_SDL_SetX11EventHook_is_marked_unused +#ifdef SDL_SetLinuxThreadPriority +#undef SDL_SetLinuxThreadPriority +#endif // SDL_SetLinuxThreadPriority +#define SDL_SetLinuxThreadPriority SDL3_symbol_SDL_SetLinuxThreadPriority_is_marked_unused +#ifdef SDL_SetLinuxThreadPriorityAndPolicy +#undef SDL_SetLinuxThreadPriorityAndPolicy +#endif // SDL_SetLinuxThreadPriorityAndPolicy +#define SDL_SetLinuxThreadPriorityAndPolicy SDL3_symbol_SDL_SetLinuxThreadPriorityAndPolicy_is_marked_unused +#ifdef SDL_IsChromebook +#undef SDL_IsChromebook +#endif // SDL_IsChromebook +#define SDL_IsChromebook SDL3_symbol_SDL_IsChromebook_is_marked_unused +#ifdef SDL_IsDeXMode +#undef SDL_IsDeXMode +#endif // SDL_IsDeXMode +#define SDL_IsDeXMode SDL3_symbol_SDL_IsDeXMode_is_marked_unused +#ifdef SDL_IsTablet +#undef SDL_IsTablet +#endif // SDL_IsTablet +#define SDL_IsTablet SDL3_symbol_SDL_IsTablet_is_marked_unused +#ifdef SDL_IsTV +#undef SDL_IsTV +#endif // SDL_IsTV +#define SDL_IsTV SDL3_symbol_SDL_IsTV_is_marked_unused +#ifdef SDL_GetSandbox +#undef SDL_GetSandbox +#endif // SDL_GetSandbox +#define SDL_GetSandbox SDL3_symbol_SDL_GetSandbox_is_marked_unused +#ifdef SDL_OnApplicationWillTerminate +#undef SDL_OnApplicationWillTerminate +#endif // SDL_OnApplicationWillTerminate +#define SDL_OnApplicationWillTerminate SDL3_symbol_SDL_OnApplicationWillTerminate_is_marked_unused +#ifdef SDL_OnApplicationDidReceiveMemoryWarning +#undef SDL_OnApplicationDidReceiveMemoryWarning +#endif // SDL_OnApplicationDidReceiveMemoryWarning +#define SDL_OnApplicationDidReceiveMemoryWarning SDL3_symbol_SDL_OnApplicationDidReceiveMemoryWarning_is_marked_unused +#ifdef SDL_OnApplicationWillEnterBackground +#undef SDL_OnApplicationWillEnterBackground +#endif // SDL_OnApplicationWillEnterBackground +#define SDL_OnApplicationWillEnterBackground SDL3_symbol_SDL_OnApplicationWillEnterBackground_is_marked_unused +#ifdef SDL_OnApplicationDidEnterBackground +#undef SDL_OnApplicationDidEnterBackground +#endif // SDL_OnApplicationDidEnterBackground +#define SDL_OnApplicationDidEnterBackground SDL3_symbol_SDL_OnApplicationDidEnterBackground_is_marked_unused +#ifdef SDL_OnApplicationWillEnterForeground +#undef SDL_OnApplicationWillEnterForeground +#endif // SDL_OnApplicationWillEnterForeground +#define SDL_OnApplicationWillEnterForeground SDL3_symbol_SDL_OnApplicationWillEnterForeground_is_marked_unused +#ifdef SDL_OnApplicationDidEnterForeground +#undef SDL_OnApplicationDidEnterForeground +#endif // SDL_OnApplicationDidEnterForeground +#define SDL_OnApplicationDidEnterForeground SDL3_symbol_SDL_OnApplicationDidEnterForeground_is_marked_unused +#ifdef SDL_OnApplicationDidChangeStatusBarOrientation +#undef SDL_OnApplicationDidChangeStatusBarOrientation +#endif // SDL_OnApplicationDidChangeStatusBarOrientation +#define SDL_OnApplicationDidChangeStatusBarOrientation \ + SDL3_symbol_SDL_OnApplicationDidChangeStatusBarOrientation_is_marked_unused +#ifdef SDL_CreateThreadRuntime +#undef SDL_CreateThreadRuntime +#endif // SDL_CreateThreadRuntime +#define SDL_CreateThreadRuntime SDL3_symbol_SDL_CreateThreadRuntime_is_marked_unused +#ifdef SDL_CreateThreadWithPropertiesRuntime +#undef SDL_CreateThreadWithPropertiesRuntime +#endif // SDL_CreateThreadWithPropertiesRuntime +#define SDL_CreateThreadWithPropertiesRuntime SDL3.SDL_CreateThreadWithPropertiesRuntime_symbol +#ifdef SDL_GetThreadName +#undef SDL_GetThreadName +#endif // SDL_GetThreadName +#define SDL_GetThreadName SDL3_symbol_SDL_GetThreadName_is_marked_unused +#ifdef SDL_GetCurrentThreadID +#undef SDL_GetCurrentThreadID +#endif // SDL_GetCurrentThreadID +#define SDL_GetCurrentThreadID SDL3_symbol_SDL_GetCurrentThreadID_is_marked_unused +#ifdef SDL_GetThreadID +#undef SDL_GetThreadID +#endif // SDL_GetThreadID +#define SDL_GetThreadID SDL3_symbol_SDL_GetThreadID_is_marked_unused +#ifdef SDL_SetCurrentThreadPriority +#undef SDL_SetCurrentThreadPriority +#endif // SDL_SetCurrentThreadPriority +#define SDL_SetCurrentThreadPriority SDL3_symbol_SDL_SetCurrentThreadPriority_is_marked_unused +#ifdef SDL_WaitThread +#undef SDL_WaitThread +#endif // SDL_WaitThread +#define SDL_WaitThread SDL3.SDL_WaitThread_symbol +#ifdef SDL_GetThreadState +#undef SDL_GetThreadState +#endif // SDL_GetThreadState +#define SDL_GetThreadState SDL3_symbol_SDL_GetThreadState_is_marked_unused +#ifdef SDL_DetachThread +#undef SDL_DetachThread +#endif // SDL_DetachThread +#define SDL_DetachThread SDL3_symbol_SDL_DetachThread_is_marked_unused +#ifdef SDL_GetTLS +#undef SDL_GetTLS +#endif // SDL_GetTLS +#define SDL_GetTLS SDL3_symbol_SDL_GetTLS_is_marked_unused +#ifdef SDL_SetTLS +#undef SDL_SetTLS +#endif // SDL_SetTLS +#define SDL_SetTLS SDL3_symbol_SDL_SetTLS_is_marked_unused +#ifdef SDL_CleanupTLS +#undef SDL_CleanupTLS +#endif // SDL_CleanupTLS +#define SDL_CleanupTLS SDL3_symbol_SDL_CleanupTLS_is_marked_unused +#ifdef SDL_GetDateTimeLocalePreferences +#undef SDL_GetDateTimeLocalePreferences +#endif // SDL_GetDateTimeLocalePreferences +#define SDL_GetDateTimeLocalePreferences SDL3_symbol_SDL_GetDateTimeLocalePreferences_is_marked_unused +#ifdef SDL_GetCurrentTime +#undef SDL_GetCurrentTime +#endif // SDL_GetCurrentTime +#define SDL_GetCurrentTime SDL3_symbol_SDL_GetCurrentTime_is_marked_unused +#ifdef SDL_TimeToDateTime +#undef SDL_TimeToDateTime +#endif // SDL_TimeToDateTime +#define SDL_TimeToDateTime SDL3_symbol_SDL_TimeToDateTime_is_marked_unused +#ifdef SDL_DateTimeToTime +#undef SDL_DateTimeToTime +#endif // SDL_DateTimeToTime +#define SDL_DateTimeToTime SDL3_symbol_SDL_DateTimeToTime_is_marked_unused +#ifdef SDL_TimeToWindows +#undef SDL_TimeToWindows +#endif // SDL_TimeToWindows +#define SDL_TimeToWindows SDL3_symbol_SDL_TimeToWindows_is_marked_unused +#ifdef SDL_TimeFromWindows +#undef SDL_TimeFromWindows +#endif // SDL_TimeFromWindows +#define SDL_TimeFromWindows SDL3_symbol_SDL_TimeFromWindows_is_marked_unused +#ifdef SDL_GetDaysInMonth +#undef SDL_GetDaysInMonth +#endif // SDL_GetDaysInMonth +#define SDL_GetDaysInMonth SDL3_symbol_SDL_GetDaysInMonth_is_marked_unused +#ifdef SDL_GetDayOfYear +#undef SDL_GetDayOfYear +#endif // SDL_GetDayOfYear +#define SDL_GetDayOfYear SDL3_symbol_SDL_GetDayOfYear_is_marked_unused +#ifdef SDL_GetDayOfWeek +#undef SDL_GetDayOfWeek +#endif // SDL_GetDayOfWeek +#define SDL_GetDayOfWeek SDL3_symbol_SDL_GetDayOfWeek_is_marked_unused +#ifdef SDL_GetTicks +#undef SDL_GetTicks +#endif // SDL_GetTicks +#define SDL_GetTicks SDL3.SDL_GetTicks_symbol +#ifdef SDL_GetTicksNS +#undef SDL_GetTicksNS +#endif // SDL_GetTicksNS +#define SDL_GetTicksNS SDL3.SDL_GetTicksNS_symbol +#ifdef SDL_GetPerformanceCounter +#undef SDL_GetPerformanceCounter +#endif // SDL_GetPerformanceCounter +#define SDL_GetPerformanceCounter SDL3.SDL_GetPerformanceCounter_symbol +#ifdef SDL_GetPerformanceFrequency +#undef SDL_GetPerformanceFrequency +#endif // SDL_GetPerformanceFrequency +#define SDL_GetPerformanceFrequency SDL3.SDL_GetPerformanceFrequency_symbol +#ifdef SDL_Delay +#undef SDL_Delay +#endif // SDL_Delay +#define SDL_Delay SDL3.SDL_Delay_symbol +#ifdef SDL_DelayNS +#undef SDL_DelayNS +#endif // SDL_DelayNS +#define SDL_DelayNS SDL3_symbol_SDL_DelayNS_is_marked_unused +#ifdef SDL_DelayPrecise +#undef SDL_DelayPrecise +#endif // SDL_DelayPrecise +#define SDL_DelayPrecise SDL3_symbol_SDL_DelayPrecise_is_marked_unused +#ifdef SDL_AddTimer +#undef SDL_AddTimer +#endif // SDL_AddTimer +#define SDL_AddTimer SDL3.SDL_AddTimer_symbol +#ifdef SDL_AddTimerNS +#undef SDL_AddTimerNS +#endif // SDL_AddTimerNS +#define SDL_AddTimerNS SDL3_symbol_SDL_AddTimerNS_is_marked_unused +#ifdef SDL_RemoveTimer +#undef SDL_RemoveTimer +#endif // SDL_RemoveTimer +#define SDL_RemoveTimer SDL3.SDL_RemoveTimer_symbol +#ifdef SDL_GetTouchDevices +#undef SDL_GetTouchDevices +#endif // SDL_GetTouchDevices +#define SDL_GetTouchDevices SDL3_symbol_SDL_GetTouchDevices_is_marked_unused +#ifdef SDL_GetTouchDeviceName +#undef SDL_GetTouchDeviceName +#endif // SDL_GetTouchDeviceName +#define SDL_GetTouchDeviceName SDL3_symbol_SDL_GetTouchDeviceName_is_marked_unused +#ifdef SDL_GetTouchDeviceType +#undef SDL_GetTouchDeviceType +#endif // SDL_GetTouchDeviceType +#define SDL_GetTouchDeviceType SDL3_symbol_SDL_GetTouchDeviceType_is_marked_unused +#ifdef SDL_GetTouchFingers +#undef SDL_GetTouchFingers +#endif // SDL_GetTouchFingers +#define SDL_GetTouchFingers SDL3_symbol_SDL_GetTouchFingers_is_marked_unused +#ifdef SDL_CreateTray +#undef SDL_CreateTray +#endif // SDL_CreateTray +#define SDL_CreateTray SDL3_symbol_SDL_CreateTray_is_marked_unused +#ifdef SDL_SetTrayIcon +#undef SDL_SetTrayIcon +#endif // SDL_SetTrayIcon +#define SDL_SetTrayIcon SDL3_symbol_SDL_SetTrayIcon_is_marked_unused +#ifdef SDL_SetTrayTooltip +#undef SDL_SetTrayTooltip +#endif // SDL_SetTrayTooltip +#define SDL_SetTrayTooltip SDL3_symbol_SDL_SetTrayTooltip_is_marked_unused +#ifdef SDL_CreateTrayMenu +#undef SDL_CreateTrayMenu +#endif // SDL_CreateTrayMenu +#define SDL_CreateTrayMenu SDL3_symbol_SDL_CreateTrayMenu_is_marked_unused +#ifdef SDL_CreateTraySubmenu +#undef SDL_CreateTraySubmenu +#endif // SDL_CreateTraySubmenu +#define SDL_CreateTraySubmenu SDL3_symbol_SDL_CreateTraySubmenu_is_marked_unused +#ifdef SDL_GetTrayMenu +#undef SDL_GetTrayMenu +#endif // SDL_GetTrayMenu +#define SDL_GetTrayMenu SDL3_symbol_SDL_GetTrayMenu_is_marked_unused +#ifdef SDL_GetTraySubmenu +#undef SDL_GetTraySubmenu +#endif // SDL_GetTraySubmenu +#define SDL_GetTraySubmenu SDL3_symbol_SDL_GetTraySubmenu_is_marked_unused +#ifdef SDL_GetTrayEntries +#undef SDL_GetTrayEntries +#endif // SDL_GetTrayEntries +#define SDL_GetTrayEntries SDL3_symbol_SDL_GetTrayEntries_is_marked_unused +#ifdef SDL_RemoveTrayEntry +#undef SDL_RemoveTrayEntry +#endif // SDL_RemoveTrayEntry +#define SDL_RemoveTrayEntry SDL3_symbol_SDL_RemoveTrayEntry_is_marked_unused +#ifdef SDL_InsertTrayEntryAt +#undef SDL_InsertTrayEntryAt +#endif // SDL_InsertTrayEntryAt +#define SDL_InsertTrayEntryAt SDL3_symbol_SDL_InsertTrayEntryAt_is_marked_unused +#ifdef SDL_SetTrayEntryLabel +#undef SDL_SetTrayEntryLabel +#endif // SDL_SetTrayEntryLabel +#define SDL_SetTrayEntryLabel SDL3_symbol_SDL_SetTrayEntryLabel_is_marked_unused +#ifdef SDL_GetTrayEntryLabel +#undef SDL_GetTrayEntryLabel +#endif // SDL_GetTrayEntryLabel +#define SDL_GetTrayEntryLabel SDL3_symbol_SDL_GetTrayEntryLabel_is_marked_unused +#ifdef SDL_SetTrayEntryChecked +#undef SDL_SetTrayEntryChecked +#endif // SDL_SetTrayEntryChecked +#define SDL_SetTrayEntryChecked SDL3_symbol_SDL_SetTrayEntryChecked_is_marked_unused +#ifdef SDL_GetTrayEntryChecked +#undef SDL_GetTrayEntryChecked +#endif // SDL_GetTrayEntryChecked +#define SDL_GetTrayEntryChecked SDL3_symbol_SDL_GetTrayEntryChecked_is_marked_unused +#ifdef SDL_SetTrayEntryEnabled +#undef SDL_SetTrayEntryEnabled +#endif // SDL_SetTrayEntryEnabled +#define SDL_SetTrayEntryEnabled SDL3_symbol_SDL_SetTrayEntryEnabled_is_marked_unused +#ifdef SDL_GetTrayEntryEnabled +#undef SDL_GetTrayEntryEnabled +#endif // SDL_GetTrayEntryEnabled +#define SDL_GetTrayEntryEnabled SDL3_symbol_SDL_GetTrayEntryEnabled_is_marked_unused +#ifdef SDL_SetTrayEntryCallback +#undef SDL_SetTrayEntryCallback +#endif // SDL_SetTrayEntryCallback +#define SDL_SetTrayEntryCallback SDL3_symbol_SDL_SetTrayEntryCallback_is_marked_unused +#ifdef SDL_ClickTrayEntry +#undef SDL_ClickTrayEntry +#endif // SDL_ClickTrayEntry +#define SDL_ClickTrayEntry SDL3_symbol_SDL_ClickTrayEntry_is_marked_unused +#ifdef SDL_DestroyTray +#undef SDL_DestroyTray +#endif // SDL_DestroyTray +#define SDL_DestroyTray SDL3_symbol_SDL_DestroyTray_is_marked_unused +#ifdef SDL_GetTrayEntryParent +#undef SDL_GetTrayEntryParent +#endif // SDL_GetTrayEntryParent +#define SDL_GetTrayEntryParent SDL3_symbol_SDL_GetTrayEntryParent_is_marked_unused +#ifdef SDL_GetTrayMenuParentEntry +#undef SDL_GetTrayMenuParentEntry +#endif // SDL_GetTrayMenuParentEntry +#define SDL_GetTrayMenuParentEntry SDL3_symbol_SDL_GetTrayMenuParentEntry_is_marked_unused +#ifdef SDL_GetTrayMenuParentTray +#undef SDL_GetTrayMenuParentTray +#endif // SDL_GetTrayMenuParentTray +#define SDL_GetTrayMenuParentTray SDL3_symbol_SDL_GetTrayMenuParentTray_is_marked_unused +#ifdef SDL_UpdateTrays +#undef SDL_UpdateTrays +#endif // SDL_UpdateTrays +#define SDL_UpdateTrays SDL3_symbol_SDL_UpdateTrays_is_marked_unused +#ifdef SDL_GetVersion +#undef SDL_GetVersion +#endif // SDL_GetVersion +#define SDL_GetVersion SDL3.SDL_GetVersion_symbol +#ifdef SDL_GetRevision +#undef SDL_GetRevision +#endif // SDL_GetRevision +#define SDL_GetRevision SDL3.SDL_GetRevision_symbol +#ifdef SDL_GetNumVideoDrivers +#undef SDL_GetNumVideoDrivers +#endif // SDL_GetNumVideoDrivers +#define SDL_GetNumVideoDrivers SDL3_symbol_SDL_GetNumVideoDrivers_is_marked_unused +#ifdef SDL_GetVideoDriver +#undef SDL_GetVideoDriver +#endif // SDL_GetVideoDriver +#define SDL_GetVideoDriver SDL3_symbol_SDL_GetVideoDriver_is_marked_unused +#ifdef SDL_GetCurrentVideoDriver +#undef SDL_GetCurrentVideoDriver +#endif // SDL_GetCurrentVideoDriver +#define SDL_GetCurrentVideoDriver SDL3.SDL_GetCurrentVideoDriver_symbol +#ifdef SDL_GetSystemTheme +#undef SDL_GetSystemTheme +#endif // SDL_GetSystemTheme +#define SDL_GetSystemTheme SDL3_symbol_SDL_GetSystemTheme_is_marked_unused +#ifdef SDL_GetDisplays +#undef SDL_GetDisplays +#endif // SDL_GetDisplays +#define SDL_GetDisplays SDL3_symbol_SDL_GetDisplays_is_marked_unused +#ifdef SDL_GetPrimaryDisplay +#undef SDL_GetPrimaryDisplay +#endif // SDL_GetPrimaryDisplay +#define SDL_GetPrimaryDisplay SDL3.SDL_GetPrimaryDisplay_symbol +#ifdef SDL_GetDisplayProperties +#undef SDL_GetDisplayProperties +#endif // SDL_GetDisplayProperties +#define SDL_GetDisplayProperties SDL3_symbol_SDL_GetDisplayProperties_is_marked_unused +#ifdef SDL_GetDisplayName +#undef SDL_GetDisplayName +#endif // SDL_GetDisplayName +#define SDL_GetDisplayName SDL3_symbol_SDL_GetDisplayName_is_marked_unused +#ifdef SDL_GetDisplayBounds +#undef SDL_GetDisplayBounds +#endif // SDL_GetDisplayBounds +#define SDL_GetDisplayBounds SDL3_symbol_SDL_GetDisplayBounds_is_marked_unused +#ifdef SDL_GetDisplayUsableBounds +#undef SDL_GetDisplayUsableBounds +#endif // SDL_GetDisplayUsableBounds +#define SDL_GetDisplayUsableBounds SDL3_symbol_SDL_GetDisplayUsableBounds_is_marked_unused +#ifdef SDL_GetNaturalDisplayOrientation +#undef SDL_GetNaturalDisplayOrientation +#endif // SDL_GetNaturalDisplayOrientation +#define SDL_GetNaturalDisplayOrientation SDL3_symbol_SDL_GetNaturalDisplayOrientation_is_marked_unused +#ifdef SDL_GetCurrentDisplayOrientation +#undef SDL_GetCurrentDisplayOrientation +#endif // SDL_GetCurrentDisplayOrientation +#define SDL_GetCurrentDisplayOrientation SDL3_symbol_SDL_GetCurrentDisplayOrientation_is_marked_unused +#ifdef SDL_GetDisplayContentScale +#undef SDL_GetDisplayContentScale +#endif // SDL_GetDisplayContentScale +#define SDL_GetDisplayContentScale SDL3_symbol_SDL_GetDisplayContentScale_is_marked_unused +#ifdef SDL_GetFullscreenDisplayModes +#undef SDL_GetFullscreenDisplayModes +#endif // SDL_GetFullscreenDisplayModes +#define SDL_GetFullscreenDisplayModes SDL3.SDL_GetFullscreenDisplayModes_symbol +#ifdef SDL_GetClosestFullscreenDisplayMode +#undef SDL_GetClosestFullscreenDisplayMode +#endif // SDL_GetClosestFullscreenDisplayMode +#define SDL_GetClosestFullscreenDisplayMode SDL3.SDL_GetClosestFullscreenDisplayMode_symbol +#ifdef SDL_GetDesktopDisplayMode +#undef SDL_GetDesktopDisplayMode +#endif // SDL_GetDesktopDisplayMode +#define SDL_GetDesktopDisplayMode SDL3_symbol_SDL_GetDesktopDisplayMode_is_marked_unused +#ifdef SDL_GetCurrentDisplayMode +#undef SDL_GetCurrentDisplayMode +#endif // SDL_GetCurrentDisplayMode +#define SDL_GetCurrentDisplayMode SDL3.SDL_GetCurrentDisplayMode_symbol +#ifdef SDL_GetDisplayForPoint +#undef SDL_GetDisplayForPoint +#endif // SDL_GetDisplayForPoint +#define SDL_GetDisplayForPoint SDL3_symbol_SDL_GetDisplayForPoint_is_marked_unused +#ifdef SDL_GetDisplayForRect +#undef SDL_GetDisplayForRect +#endif // SDL_GetDisplayForRect +#define SDL_GetDisplayForRect SDL3_symbol_SDL_GetDisplayForRect_is_marked_unused +#ifdef SDL_GetDisplayForWindow +#undef SDL_GetDisplayForWindow +#endif // SDL_GetDisplayForWindow +#define SDL_GetDisplayForWindow SDL3.SDL_GetDisplayForWindow_symbol +#ifdef SDL_GetWindowPixelDensity +#undef SDL_GetWindowPixelDensity +#endif // SDL_GetWindowPixelDensity +#define SDL_GetWindowPixelDensity SDL3_symbol_SDL_GetWindowPixelDensity_is_marked_unused +#ifdef SDL_GetWindowDisplayScale +#undef SDL_GetWindowDisplayScale +#endif // SDL_GetWindowDisplayScale +#define SDL_GetWindowDisplayScale SDL3_symbol_SDL_GetWindowDisplayScale_is_marked_unused +#ifdef SDL_SetWindowFullscreenMode +#undef SDL_SetWindowFullscreenMode +#endif // SDL_SetWindowFullscreenMode +#define SDL_SetWindowFullscreenMode SDL3.SDL_SetWindowFullscreenMode_symbol +#ifdef SDL_GetWindowFullscreenMode +#undef SDL_GetWindowFullscreenMode +#endif // SDL_GetWindowFullscreenMode +#define SDL_GetWindowFullscreenMode SDL3_symbol_SDL_GetWindowFullscreenMode_is_marked_unused +#ifdef SDL_GetWindowICCProfile +#undef SDL_GetWindowICCProfile +#endif // SDL_GetWindowICCProfile +#define SDL_GetWindowICCProfile SDL3_symbol_SDL_GetWindowICCProfile_is_marked_unused +#ifdef SDL_GetWindowPixelFormat +#undef SDL_GetWindowPixelFormat +#endif // SDL_GetWindowPixelFormat +#define SDL_GetWindowPixelFormat SDL3_symbol_SDL_GetWindowPixelFormat_is_marked_unused +#ifdef SDL_GetWindows +#undef SDL_GetWindows +#endif // SDL_GetWindows +#define SDL_GetWindows SDL3_symbol_SDL_GetWindows_is_marked_unused +#ifdef SDL_CreateWindow +#undef SDL_CreateWindow +#endif // SDL_CreateWindow +#define SDL_CreateWindow SDL3_symbol_SDL_CreateWindow_is_marked_unused +#ifdef SDL_CreatePopupWindow +#undef SDL_CreatePopupWindow +#endif // SDL_CreatePopupWindow +#define SDL_CreatePopupWindow SDL3_symbol_SDL_CreatePopupWindow_is_marked_unused +#ifdef SDL_CreateWindowWithProperties +#undef SDL_CreateWindowWithProperties +#endif // SDL_CreateWindowWithProperties +#define SDL_CreateWindowWithProperties SDL3.SDL_CreateWindowWithProperties_symbol +#ifdef SDL_GetWindowID +#undef SDL_GetWindowID +#endif // SDL_GetWindowID +#define SDL_GetWindowID SDL3_symbol_SDL_GetWindowID_is_marked_unused +#ifdef SDL_GetWindowFromID +#undef SDL_GetWindowFromID +#endif // SDL_GetWindowFromID +#define SDL_GetWindowFromID SDL3_symbol_SDL_GetWindowFromID_is_marked_unused +#ifdef SDL_GetWindowParent +#undef SDL_GetWindowParent +#endif // SDL_GetWindowParent +#define SDL_GetWindowParent SDL3_symbol_SDL_GetWindowParent_is_marked_unused +#ifdef SDL_GetWindowProperties +#undef SDL_GetWindowProperties +#endif // SDL_GetWindowProperties +#define SDL_GetWindowProperties SDL3.SDL_GetWindowProperties_symbol +#ifdef SDL_GetWindowFlags +#undef SDL_GetWindowFlags +#endif // SDL_GetWindowFlags +#define SDL_GetWindowFlags SDL3.SDL_GetWindowFlags_symbol +#ifdef SDL_SetWindowTitle +#undef SDL_SetWindowTitle +#endif // SDL_SetWindowTitle +#define SDL_SetWindowTitle SDL3.SDL_SetWindowTitle_symbol +#ifdef SDL_GetWindowTitle +#undef SDL_GetWindowTitle +#endif // SDL_GetWindowTitle +#define SDL_GetWindowTitle SDL3_symbol_SDL_GetWindowTitle_is_marked_unused +#ifdef SDL_SetWindowIcon +#undef SDL_SetWindowIcon +#endif // SDL_SetWindowIcon +#define SDL_SetWindowIcon SDL3.SDL_SetWindowIcon_symbol +#ifdef SDL_SetWindowPosition +#undef SDL_SetWindowPosition +#endif // SDL_SetWindowPosition +#define SDL_SetWindowPosition SDL3.SDL_SetWindowPosition_symbol +#ifdef SDL_GetWindowPosition +#undef SDL_GetWindowPosition +#endif // SDL_GetWindowPosition +#define SDL_GetWindowPosition SDL3_symbol_SDL_GetWindowPosition_is_marked_unused +#ifdef SDL_SetWindowSize +#undef SDL_SetWindowSize +#endif // SDL_SetWindowSize +#define SDL_SetWindowSize SDL3.SDL_SetWindowSize_symbol +#ifdef SDL_GetWindowSize +#undef SDL_GetWindowSize +#endif // SDL_GetWindowSize +#define SDL_GetWindowSize SDL3.SDL_GetWindowSize_symbol +#ifdef SDL_GetWindowSafeArea +#undef SDL_GetWindowSafeArea +#endif // SDL_GetWindowSafeArea +#define SDL_GetWindowSafeArea SDL3_symbol_SDL_GetWindowSafeArea_is_marked_unused +#ifdef SDL_SetWindowAspectRatio +#undef SDL_SetWindowAspectRatio +#endif // SDL_SetWindowAspectRatio +#define SDL_SetWindowAspectRatio SDL3_symbol_SDL_SetWindowAspectRatio_is_marked_unused +#ifdef SDL_GetWindowAspectRatio +#undef SDL_GetWindowAspectRatio +#endif // SDL_GetWindowAspectRatio +#define SDL_GetWindowAspectRatio SDL3_symbol_SDL_GetWindowAspectRatio_is_marked_unused +#ifdef SDL_GetWindowBordersSize +#undef SDL_GetWindowBordersSize +#endif // SDL_GetWindowBordersSize +#define SDL_GetWindowBordersSize SDL3_symbol_SDL_GetWindowBordersSize_is_marked_unused +#ifdef SDL_GetWindowSizeInPixels +#undef SDL_GetWindowSizeInPixels +#endif // SDL_GetWindowSizeInPixels +#define SDL_GetWindowSizeInPixels SDL3.SDL_GetWindowSizeInPixels_symbol +#ifdef SDL_SetWindowMinimumSize +#undef SDL_SetWindowMinimumSize +#endif // SDL_SetWindowMinimumSize +#define SDL_SetWindowMinimumSize SDL3_symbol_SDL_SetWindowMinimumSize_is_marked_unused +#ifdef SDL_GetWindowMinimumSize +#undef SDL_GetWindowMinimumSize +#endif // SDL_GetWindowMinimumSize +#define SDL_GetWindowMinimumSize SDL3_symbol_SDL_GetWindowMinimumSize_is_marked_unused +#ifdef SDL_SetWindowMaximumSize +#undef SDL_SetWindowMaximumSize +#endif // SDL_SetWindowMaximumSize +#define SDL_SetWindowMaximumSize SDL3_symbol_SDL_SetWindowMaximumSize_is_marked_unused +#ifdef SDL_GetWindowMaximumSize +#undef SDL_GetWindowMaximumSize +#endif // SDL_GetWindowMaximumSize +#define SDL_GetWindowMaximumSize SDL3_symbol_SDL_GetWindowMaximumSize_is_marked_unused +#ifdef SDL_SetWindowBordered +#undef SDL_SetWindowBordered +#endif // SDL_SetWindowBordered +#define SDL_SetWindowBordered SDL3.SDL_SetWindowBordered_symbol +#ifdef SDL_SetWindowResizable +#undef SDL_SetWindowResizable +#endif // SDL_SetWindowResizable +#define SDL_SetWindowResizable SDL3.SDL_SetWindowResizable_symbol +#ifdef SDL_SetWindowAlwaysOnTop +#undef SDL_SetWindowAlwaysOnTop +#endif // SDL_SetWindowAlwaysOnTop +#define SDL_SetWindowAlwaysOnTop SDL3_symbol_SDL_SetWindowAlwaysOnTop_is_marked_unused +#ifdef SDL_SetWindowFillDocument +#undef SDL_SetWindowFillDocument +#endif // SDL_SetWindowFillDocument +#define SDL_SetWindowFillDocument SDL3_symbol_SDL_SetWindowFillDocument_is_marked_unused +#ifdef SDL_ShowWindow +#undef SDL_ShowWindow +#endif // SDL_ShowWindow +#define SDL_ShowWindow SDL3_symbol_SDL_ShowWindow_is_marked_unused +#ifdef SDL_HideWindow +#undef SDL_HideWindow +#endif // SDL_HideWindow +#define SDL_HideWindow SDL3_symbol_SDL_HideWindow_is_marked_unused +#ifdef SDL_RaiseWindow +#undef SDL_RaiseWindow +#endif // SDL_RaiseWindow +#define SDL_RaiseWindow SDL3.SDL_RaiseWindow_symbol +#ifdef SDL_MaximizeWindow +#undef SDL_MaximizeWindow +#endif // SDL_MaximizeWindow +#define SDL_MaximizeWindow SDL3_symbol_SDL_MaximizeWindow_is_marked_unused +#ifdef SDL_MinimizeWindow +#undef SDL_MinimizeWindow +#endif // SDL_MinimizeWindow +#define SDL_MinimizeWindow SDL3_symbol_SDL_MinimizeWindow_is_marked_unused +#ifdef SDL_RestoreWindow +#undef SDL_RestoreWindow +#endif // SDL_RestoreWindow +#define SDL_RestoreWindow SDL3_symbol_SDL_RestoreWindow_is_marked_unused +#ifdef SDL_SetWindowFullscreen +#undef SDL_SetWindowFullscreen +#endif // SDL_SetWindowFullscreen +#define SDL_SetWindowFullscreen SDL3.SDL_SetWindowFullscreen_symbol +#ifdef SDL_SyncWindow +#undef SDL_SyncWindow +#endif // SDL_SyncWindow +#define SDL_SyncWindow SDL3_symbol_SDL_SyncWindow_is_marked_unused +#ifdef SDL_WindowHasSurface +#undef SDL_WindowHasSurface +#endif // SDL_WindowHasSurface +#define SDL_WindowHasSurface SDL3_symbol_SDL_WindowHasSurface_is_marked_unused +#ifdef SDL_GetWindowSurface +#undef SDL_GetWindowSurface +#endif // SDL_GetWindowSurface +#define SDL_GetWindowSurface SDL3_symbol_SDL_GetWindowSurface_is_marked_unused +#ifdef SDL_SetWindowSurfaceVSync +#undef SDL_SetWindowSurfaceVSync +#endif // SDL_SetWindowSurfaceVSync +#define SDL_SetWindowSurfaceVSync SDL3_symbol_SDL_SetWindowSurfaceVSync_is_marked_unused +#ifdef SDL_GetWindowSurfaceVSync +#undef SDL_GetWindowSurfaceVSync +#endif // SDL_GetWindowSurfaceVSync +#define SDL_GetWindowSurfaceVSync SDL3_symbol_SDL_GetWindowSurfaceVSync_is_marked_unused +#ifdef SDL_UpdateWindowSurface +#undef SDL_UpdateWindowSurface +#endif // SDL_UpdateWindowSurface +#define SDL_UpdateWindowSurface SDL3_symbol_SDL_UpdateWindowSurface_is_marked_unused +#ifdef SDL_UpdateWindowSurfaceRects +#undef SDL_UpdateWindowSurfaceRects +#endif // SDL_UpdateWindowSurfaceRects +#define SDL_UpdateWindowSurfaceRects SDL3_symbol_SDL_UpdateWindowSurfaceRects_is_marked_unused +#ifdef SDL_DestroyWindowSurface +#undef SDL_DestroyWindowSurface +#endif // SDL_DestroyWindowSurface +#define SDL_DestroyWindowSurface SDL3_symbol_SDL_DestroyWindowSurface_is_marked_unused +#ifdef SDL_SetWindowKeyboardGrab +#undef SDL_SetWindowKeyboardGrab +#endif // SDL_SetWindowKeyboardGrab +#define SDL_SetWindowKeyboardGrab SDL3_symbol_SDL_SetWindowKeyboardGrab_is_marked_unused +#ifdef SDL_SetWindowMouseGrab +#undef SDL_SetWindowMouseGrab +#endif // SDL_SetWindowMouseGrab +#define SDL_SetWindowMouseGrab SDL3_symbol_SDL_SetWindowMouseGrab_is_marked_unused +#ifdef SDL_GetWindowKeyboardGrab +#undef SDL_GetWindowKeyboardGrab +#endif // SDL_GetWindowKeyboardGrab +#define SDL_GetWindowKeyboardGrab SDL3_symbol_SDL_GetWindowKeyboardGrab_is_marked_unused +#ifdef SDL_GetWindowMouseGrab +#undef SDL_GetWindowMouseGrab +#endif // SDL_GetWindowMouseGrab +#define SDL_GetWindowMouseGrab SDL3_symbol_SDL_GetWindowMouseGrab_is_marked_unused +#ifdef SDL_GetGrabbedWindow +#undef SDL_GetGrabbedWindow +#endif // SDL_GetGrabbedWindow +#define SDL_GetGrabbedWindow SDL3_symbol_SDL_GetGrabbedWindow_is_marked_unused +#ifdef SDL_SetWindowMouseRect +#undef SDL_SetWindowMouseRect +#endif // SDL_SetWindowMouseRect +#define SDL_SetWindowMouseRect SDL3_symbol_SDL_SetWindowMouseRect_is_marked_unused +#ifdef SDL_GetWindowMouseRect +#undef SDL_GetWindowMouseRect +#endif // SDL_GetWindowMouseRect +#define SDL_GetWindowMouseRect SDL3_symbol_SDL_GetWindowMouseRect_is_marked_unused +#ifdef SDL_SetWindowOpacity +#undef SDL_SetWindowOpacity +#endif // SDL_SetWindowOpacity +#define SDL_SetWindowOpacity SDL3_symbol_SDL_SetWindowOpacity_is_marked_unused +#ifdef SDL_GetWindowOpacity +#undef SDL_GetWindowOpacity +#endif // SDL_GetWindowOpacity +#define SDL_GetWindowOpacity SDL3_symbol_SDL_GetWindowOpacity_is_marked_unused +#ifdef SDL_SetWindowParent +#undef SDL_SetWindowParent +#endif // SDL_SetWindowParent +#define SDL_SetWindowParent SDL3_symbol_SDL_SetWindowParent_is_marked_unused +#ifdef SDL_SetWindowModal +#undef SDL_SetWindowModal +#endif // SDL_SetWindowModal +#define SDL_SetWindowModal SDL3_symbol_SDL_SetWindowModal_is_marked_unused +#ifdef SDL_SetWindowFocusable +#undef SDL_SetWindowFocusable +#endif // SDL_SetWindowFocusable +#define SDL_SetWindowFocusable SDL3_symbol_SDL_SetWindowFocusable_is_marked_unused +#ifdef SDL_ShowWindowSystemMenu +#undef SDL_ShowWindowSystemMenu +#endif // SDL_ShowWindowSystemMenu +#define SDL_ShowWindowSystemMenu SDL3_symbol_SDL_ShowWindowSystemMenu_is_marked_unused +#ifdef SDL_SetWindowHitTest +#undef SDL_SetWindowHitTest +#endif // SDL_SetWindowHitTest +#define SDL_SetWindowHitTest SDL3_symbol_SDL_SetWindowHitTest_is_marked_unused +#ifdef SDL_SetWindowShape +#undef SDL_SetWindowShape +#endif // SDL_SetWindowShape +#define SDL_SetWindowShape SDL3_symbol_SDL_SetWindowShape_is_marked_unused +#ifdef SDL_FlashWindow +#undef SDL_FlashWindow +#endif // SDL_FlashWindow +#define SDL_FlashWindow SDL3_symbol_SDL_FlashWindow_is_marked_unused +#ifdef SDL_SetWindowProgressState +#undef SDL_SetWindowProgressState +#endif // SDL_SetWindowProgressState +#define SDL_SetWindowProgressState SDL3_symbol_SDL_SetWindowProgressState_is_marked_unused +#ifdef SDL_GetWindowProgressState +#undef SDL_GetWindowProgressState +#endif // SDL_GetWindowProgressState +#define SDL_GetWindowProgressState SDL3_symbol_SDL_GetWindowProgressState_is_marked_unused +#ifdef SDL_SetWindowProgressValue +#undef SDL_SetWindowProgressValue +#endif // SDL_SetWindowProgressValue +#define SDL_SetWindowProgressValue SDL3_symbol_SDL_SetWindowProgressValue_is_marked_unused +#ifdef SDL_GetWindowProgressValue +#undef SDL_GetWindowProgressValue +#endif // SDL_GetWindowProgressValue +#define SDL_GetWindowProgressValue SDL3_symbol_SDL_GetWindowProgressValue_is_marked_unused +#ifdef SDL_DestroyWindow +#undef SDL_DestroyWindow +#endif // SDL_DestroyWindow +#define SDL_DestroyWindow SDL3.SDL_DestroyWindow_symbol +#ifdef SDL_ScreenSaverEnabled +#undef SDL_ScreenSaverEnabled +#endif // SDL_ScreenSaverEnabled +#define SDL_ScreenSaverEnabled SDL3_symbol_SDL_ScreenSaverEnabled_is_marked_unused +#ifdef SDL_EnableScreenSaver +#undef SDL_EnableScreenSaver +#endif // SDL_EnableScreenSaver +#define SDL_EnableScreenSaver SDL3_symbol_SDL_EnableScreenSaver_is_marked_unused +#ifdef SDL_DisableScreenSaver +#undef SDL_DisableScreenSaver +#endif // SDL_DisableScreenSaver +#define SDL_DisableScreenSaver SDL3_symbol_SDL_DisableScreenSaver_is_marked_unused +#ifdef SDL_GL_LoadLibrary +#undef SDL_GL_LoadLibrary +#endif // SDL_GL_LoadLibrary +#define SDL_GL_LoadLibrary SDL3_symbol_SDL_GL_LoadLibrary_is_marked_unused +#ifdef SDL_GL_GetProcAddress +#undef SDL_GL_GetProcAddress +#endif // SDL_GL_GetProcAddress +#define SDL_GL_GetProcAddress SDL3.SDL_GL_GetProcAddress_symbol +#ifdef SDL_EGL_GetProcAddress +#undef SDL_EGL_GetProcAddress +#endif // SDL_EGL_GetProcAddress +#define SDL_EGL_GetProcAddress SDL3_symbol_SDL_EGL_GetProcAddress_is_marked_unused +#ifdef SDL_GL_UnloadLibrary +#undef SDL_GL_UnloadLibrary +#endif // SDL_GL_UnloadLibrary +#define SDL_GL_UnloadLibrary SDL3_symbol_SDL_GL_UnloadLibrary_is_marked_unused +#ifdef SDL_GL_ExtensionSupported +#undef SDL_GL_ExtensionSupported +#endif // SDL_GL_ExtensionSupported +#define SDL_GL_ExtensionSupported SDL3.SDL_GL_ExtensionSupported_symbol +#ifdef SDL_GL_ResetAttributes +#undef SDL_GL_ResetAttributes +#endif // SDL_GL_ResetAttributes +#define SDL_GL_ResetAttributes SDL3.SDL_GL_ResetAttributes_symbol +#ifdef SDL_GL_SetAttribute +#undef SDL_GL_SetAttribute +#endif // SDL_GL_SetAttribute +#define SDL_GL_SetAttribute SDL3.SDL_GL_SetAttribute_symbol +#ifdef SDL_GL_GetAttribute +#undef SDL_GL_GetAttribute +#endif // SDL_GL_GetAttribute +#define SDL_GL_GetAttribute SDL3_symbol_SDL_GL_GetAttribute_is_marked_unused +#ifdef SDL_GL_CreateContext +#undef SDL_GL_CreateContext +#endif // SDL_GL_CreateContext +#define SDL_GL_CreateContext SDL3.SDL_GL_CreateContext_symbol +#ifdef SDL_GL_MakeCurrent +#undef SDL_GL_MakeCurrent +#endif // SDL_GL_MakeCurrent +#define SDL_GL_MakeCurrent SDL3.SDL_GL_MakeCurrent_symbol +#ifdef SDL_GL_GetCurrentWindow +#undef SDL_GL_GetCurrentWindow +#endif // SDL_GL_GetCurrentWindow +#define SDL_GL_GetCurrentWindow SDL3_symbol_SDL_GL_GetCurrentWindow_is_marked_unused +#ifdef SDL_GL_GetCurrentContext +#undef SDL_GL_GetCurrentContext +#endif // SDL_GL_GetCurrentContext +#define SDL_GL_GetCurrentContext SDL3_symbol_SDL_GL_GetCurrentContext_is_marked_unused +#ifdef SDL_EGL_GetCurrentDisplay +#undef SDL_EGL_GetCurrentDisplay +#endif // SDL_EGL_GetCurrentDisplay +#define SDL_EGL_GetCurrentDisplay SDL3_symbol_SDL_EGL_GetCurrentDisplay_is_marked_unused +#ifdef SDL_EGL_GetCurrentConfig +#undef SDL_EGL_GetCurrentConfig +#endif // SDL_EGL_GetCurrentConfig +#define SDL_EGL_GetCurrentConfig SDL3_symbol_SDL_EGL_GetCurrentConfig_is_marked_unused +#ifdef SDL_EGL_GetWindowSurface +#undef SDL_EGL_GetWindowSurface +#endif // SDL_EGL_GetWindowSurface +#define SDL_EGL_GetWindowSurface SDL3_symbol_SDL_EGL_GetWindowSurface_is_marked_unused +#ifdef SDL_EGL_SetAttributeCallbacks +#undef SDL_EGL_SetAttributeCallbacks +#endif // SDL_EGL_SetAttributeCallbacks +#define SDL_EGL_SetAttributeCallbacks SDL3_symbol_SDL_EGL_SetAttributeCallbacks_is_marked_unused +#ifdef SDL_GL_SetSwapInterval +#undef SDL_GL_SetSwapInterval +#endif // SDL_GL_SetSwapInterval +#define SDL_GL_SetSwapInterval SDL3_symbol_SDL_GL_SetSwapInterval_is_marked_unused +#ifdef SDL_GL_GetSwapInterval +#undef SDL_GL_GetSwapInterval +#endif // SDL_GL_GetSwapInterval +#define SDL_GL_GetSwapInterval SDL3_symbol_SDL_GL_GetSwapInterval_is_marked_unused +#ifdef SDL_GL_SwapWindow +#undef SDL_GL_SwapWindow +#endif // SDL_GL_SwapWindow +#define SDL_GL_SwapWindow SDL3.SDL_GL_SwapWindow_symbol +#ifdef SDL_GL_DestroyContext +#undef SDL_GL_DestroyContext +#endif // SDL_GL_DestroyContext +#define SDL_GL_DestroyContext SDL3.SDL_GL_DestroyContext_symbol + +#else // SDL3_DYNAMIC_LOAD + +#define load_sdl3_api() true +#define unload_sdl3_api() \ + do { \ + } while (0) + +#endif // SDL3_DYNAMIC_LOAD diff --git a/mortar/include/mortar/mortar.h b/mortar/include/mortar/mortar.h new file mode 100644 index 00000000..c61becac --- /dev/null +++ b/mortar/include/mortar/mortar.h @@ -0,0 +1,31 @@ +#pragma once + +#include "mortar/mortar_audio.h" +#include "mortar/mortar_backend.h" +#include "mortar/mortar_cpuinfo.h" +#include "mortar/mortar_error.h" +#include "mortar/mortar_events.h" +#include "mortar/mortar_filesystem.h" +#include "mortar/mortar_gamepad.h" +#include "mortar/mortar_haptic.h" +#include "mortar/mortar_init.h" +#include "mortar/mortar_iostream.h" +#include "mortar/mortar_joystick.h" +#include "mortar/mortar_keyboard.h" +#include "mortar/mortar_keycode.h" +#include "mortar/mortar_log.h" +#include "mortar/mortar_messagebox.h" +#include "mortar/mortar_mouse.h" +#include "mortar/mortar_mutex.h" +#include "mortar/mortar_pixels.h" +#include "mortar/mortar_process.h" +#include "mortar/mortar_rect.h" +#include "mortar/mortar_render.h" +#include "mortar/mortar_scancode.h" +#include "mortar/mortar_stdinc.h" +#include "mortar/mortar_surface.h" +#include "mortar/mortar_system.h" +#include "mortar/mortar_thread.h" +#include "mortar/mortar_timer.h" +#include "mortar/mortar_touch.h" +#include "mortar/mortar_video.h" diff --git a/mortar/include/mortar/mortar_audio.h b/mortar/include/mortar/mortar_audio.h new file mode 100644 index 00000000..648c3117 --- /dev/null +++ b/mortar/include/mortar/mortar_audio.h @@ -0,0 +1,41 @@ +#pragma once + +#include "mortar_begin.h" + +#include + +typedef struct MORTAR_AudioStream MORTAR_AudioStream; + +typedef enum MORTAR_AudioFormat { + MORTAR_AUDIO_UNKNOWN = 0, + MORTAR_AUDIO_F32, +} MORTAR_AudioFormat; + +typedef struct MORTAR_AudioSpec { + MORTAR_AudioFormat format; + int channels; + int freq; +} MORTAR_AudioSpec; + +typedef uint32_t MORTAR_AudioDeviceID; + +typedef void (*MORTAR_AudioStreamCallback)( + void* userdata, + MORTAR_AudioStream* stream, + int additional_amount, + int total_amount +); + +extern MORTAR_DECLSPEC MORTAR_AudioStream* MORTAR_EX_OpenAudioPlaybackDevice( + const MORTAR_AudioSpec* spec, + MORTAR_AudioStreamCallback callback, + void* userdata +); + +extern MORTAR_DECLSPEC void MORTAR_DestroyAudioStream(MORTAR_AudioStream* stream); + +extern MORTAR_DECLSPEC bool MORTAR_EX_ResumeAudioDevice(MORTAR_AudioStream* stream); + +extern MORTAR_DECLSPEC bool MORTAR_PutAudioStreamData(MORTAR_AudioStream* stream, const void* buf, int len); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_backend.h b/mortar/include/mortar/mortar_backend.h new file mode 100644 index 00000000..36e3ff43 --- /dev/null +++ b/mortar/include/mortar/mortar_backend.h @@ -0,0 +1,20 @@ +#pragma once + +#include "mortar_begin.h" + +typedef enum { + MORTAR_BACKEND_SDL3, + MORTAR_BACKEND_ANY +} MORTAR_Backend; + +extern MORTAR_DECLSPEC bool MORTAR_ParseBackendName(const char* name, MORTAR_Backend* backend); + +extern MORTAR_DECLSPEC bool MORTAR_SetBackend(MORTAR_Backend backend); + +extern MORTAR_DECLSPEC MORTAR_Backend MORTAR_GetBackend(void); + +extern MORTAR_DECLSPEC const char* MORTAR_GetBackendDescription(void); + +extern MORTAR_DECLSPEC bool MORTAR_InitializeBackend(void); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_begin.h b/mortar/include/mortar/mortar_begin.h new file mode 100644 index 00000000..51a661ce --- /dev/null +++ b/mortar/include/mortar/mortar_begin.h @@ -0,0 +1,22 @@ +#ifdef MORTAR_DLL +#ifdef BUILDING_MORTAR +#ifdef _WIN32 +#define MORTAR_DECLSPEC __declspec(dllexport) +#else +#define MORTAR_DECLSPEC __attribute__((visibility("default"))) +#endif +#else +#ifdef _WIN32 +#define MORTAR_DECLSPEC __declspec(dllimport) +#else +#define MORTAR_DECLSPEC +#endif +#endif +#else +#define MORTAR_DECLSPEC +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif diff --git a/mortar/include/mortar/mortar_cpuinfo.h b/mortar/include/mortar/mortar_cpuinfo.h new file mode 100644 index 00000000..c85b20fd --- /dev/null +++ b/mortar/include/mortar/mortar_cpuinfo.h @@ -0,0 +1,13 @@ +#pragma once + +#include "mortar_begin.h" + +extern MORTAR_DECLSPEC bool MORTAR_HasMMX(void); + +extern MORTAR_DECLSPEC bool MORTAR_HasSSE2(void); + +extern MORTAR_DECLSPEC bool MORTAR_HasNEON(void); + +extern MORTAR_DECLSPEC int MORTAR_GetSystemRAM(void); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_end.h b/mortar/include/mortar/mortar_end.h new file mode 100644 index 00000000..52f96f78 --- /dev/null +++ b/mortar/include/mortar/mortar_end.h @@ -0,0 +1,4 @@ +#ifdef __cplusplus +} +; +#endif diff --git a/mortar/include/mortar/mortar_error.h b/mortar/include/mortar/mortar_error.h new file mode 100644 index 00000000..df284dba --- /dev/null +++ b/mortar/include/mortar/mortar_error.h @@ -0,0 +1,7 @@ +#pragma once + +#include "mortar_begin.h" + +extern MORTAR_DECLSPEC const char* MORTAR_GetError(void); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_events.h b/mortar/include/mortar/mortar_events.h new file mode 100644 index 00000000..ec54fc86 --- /dev/null +++ b/mortar/include/mortar/mortar_events.h @@ -0,0 +1,397 @@ +#pragma once + +#include "mortar/mortar_joystick.h" +#include "mortar/mortar_keyboard.h" +#include "mortar/mortar_keycode.h" +#include "mortar/mortar_mouse.h" +#include "mortar/mortar_touch.h" +#include "mortar_begin.h" + +typedef enum MORTAR_EventType { + MORTAR_EVENT_QUIT = 0x100, + + MORTAR_EVENT_TERMINATING, +#if 0 + MORTAR_EVENT_LOW_MEMORY, + MORTAR_EVENT_WILL_ENTER_BACKGROUND, + MORTAR_EVENT_DID_ENTER_BACKGROUND, + MORTAR_EVENT_WILL_ENTER_FOREGROUND, + MORTAR_EVENT_DID_ENTER_FOREGROUND, + + MORTAR_EVENT_LOCALE_CHANGED, + + MORTAR_EVENT_SYSTEM_THEME_CHANGED, + MORTAR_EVENT_DISPLAY_ORIENTATION = 0x151, + MORTAR_EVENT_DISPLAY_ADDED, + MORTAR_EVENT_DISPLAY_REMOVED, + MORTAR_EVENT_DISPLAY_MOVED, + MORTAR_EVENT_DISPLAY_DESKTOP_MODE_CHANGED, + MORTAR_EVENT_DISPLAY_CURRENT_MODE_CHANGED, + MORTAR_EVENT_DISPLAY_CONTENT_SCALE_CHANGED, + MORTAR_EVENT_DISPLAY_USABLE_BOUNDS_CHANGED, + MORTAR_EVENT_DISPLAY_FIRST = MORTAR_EVENT_DISPLAY_ORIENTATION, + MORTAR_EVENT_DISPLAY_LAST = MORTAR_EVENT_DISPLAY_USABLE_BOUNDS_CHANGED, + + MORTAR_EVENT_WINDOW_SHOWN = 0x202, + MORTAR_EVENT_WINDOW_HIDDEN, + MORTAR_EVENT_WINDOW_EXPOSED, + MORTAR_EVENT_WINDOW_MOVED, + MORTAR_EVENT_WINDOW_RESIZED, +#endif + MORTAR_EVENT_WINDOW_PIXEL_SIZE_CHANGED, +#if 0 + MORTAR_EVENT_WINDOW_METAL_VIEW_RESIZED, + MORTAR_EVENT_WINDOW_MINIMIZED, + MORTAR_EVENT_WINDOW_MAXIMIZED, + MORTAR_EVENT_WINDOW_RESTORED, + MORTAR_EVENT_WINDOW_MOUSE_ENTER, + MORTAR_EVENT_WINDOW_MOUSE_LEAVE, +#endif + MORTAR_EVENT_WINDOW_FOCUS_GAINED, + MORTAR_EVENT_WINDOW_FOCUS_LOST, + MORTAR_EVENT_WINDOW_CLOSE_REQUESTED, +#if 0 + MORTAR_EVENT_WINDOW_HIT_TEST, + MORTAR_EVENT_WINDOW_ICCPROF_CHANGED, + MORTAR_EVENT_WINDOW_DISPLAY_CHANGED, + MORTAR_EVENT_WINDOW_DISPLAY_SCALE_CHANGED, + MORTAR_EVENT_WINDOW_SAFE_AREA_CHANGED, + MORTAR_EVENT_WINDOW_OCCLUDED, + MORTAR_EVENT_WINDOW_ENTER_FULLSCREEN, + MORTAR_EVENT_WINDOW_LEAVE_FULLSCREEN, + MORTAR_EVENT_WINDOW_DESTROYED, + MORTAR_EVENT_WINDOW_HDR_STATE_CHANGED, + MORTAR_EVENT_WINDOW_FIRST = MORTAR_EVENT_WINDOW_SHOWN, + MORTAR_EVENT_WINDOW_LAST = MORTAR_EVENT_WINDOW_HDR_STATE_CHANGED, +#endif + MORTAR_EVENT_KEY_DOWN, // = 0x300, + MORTAR_EVENT_KEY_UP, +#if 0 + MORTAR_EVENT_TEXT_EDITING, + MORTAR_EVENT_TEXT_INPUT, + MORTAR_EVENT_KEYMAP_CHANGED, +#endif + MORTAR_EVENT_KEYBOARD_ADDED, + MORTAR_EVENT_KEYBOARD_REMOVED, +#if 0 + MORTAR_EVENT_TEXT_EDITING_CANDIDATES, + MORTAR_EVENT_SCREEN_KEYBOARD_SHOWN, + MORTAR_EVENT_SCREEN_KEYBOARD_HIDDEN, +#endif + + MORTAR_EVENT_MOUSE_MOTION, + MORTAR_EVENT_MOUSE_BUTTON_DOWN, + MORTAR_EVENT_MOUSE_BUTTON_UP, +#if 0 + MORTAR_EVENT_MOUSE_WHEEL, +#endif + MORTAR_EVENT_MOUSE_ADDED, + MORTAR_EVENT_MOUSE_REMOVED, + +#if 0 + MORTAR_EVENT_JOYSTICK_AXIS_MOTION = 0x600, + MORTAR_EVENT_JOYSTICK_BALL_MOTION, + MORTAR_EVENT_JOYSTICK_HAT_MOTION, + MORTAR_EVENT_JOYSTICK_BUTTON_DOWN, + MORTAR_EVENT_JOYSTICK_BUTTON_UP, + MORTAR_EVENT_JOYSTICK_ADDED, + MORTAR_EVENT_JOYSTICK_REMOVED, + MORTAR_EVENT_JOYSTICK_BATTERY_UPDATED, + MORTAR_EVENT_JOYSTICK_UPDATE_COMPLETE, +#endif + + MORTAR_EVENT_GAMEPAD_AXIS_MOTION, // = 0x650, + MORTAR_EVENT_GAMEPAD_BUTTON_DOWN, + MORTAR_EVENT_GAMEPAD_BUTTON_UP, + MORTAR_EVENT_GAMEPAD_ADDED, + MORTAR_EVENT_GAMEPAD_REMOVED, +#if 0 + MORTAR_EVENT_GAMEPAD_REMAPPED, + MORTAR_EVENT_GAMEPAD_TOUCHPAD_DOWN, + MORTAR_EVENT_GAMEPAD_TOUCHPAD_MOTION, + MORTAR_EVENT_GAMEPAD_TOUCHPAD_UP, + MORTAR_EVENT_GAMEPAD_SENSOR_UPDATE, + MORTAR_EVENT_GAMEPAD_UPDATE_COMPLETE, + MORTAR_EVENT_GAMEPAD_STEAM_HANDLE_UPDATED, +#endif + + MORTAR_EVENT_FINGER_DOWN, + MORTAR_EVENT_FINGER_UP, + MORTAR_EVENT_FINGER_MOTION, + MORTAR_EVENT_FINGER_CANCELED, + +#if 0 + MORTAR_EVENT_PINCH_BEGIN = 0x710, + MORTAR_EVENT_PINCH_UPDATE, + MORTAR_EVENT_PINCH_END, + + MORTAR_EVENT_CLIPBOARD_UPDATE = 0x900, + + MORTAR_EVENT_DROP_FILE = 0x1000, + MORTAR_EVENT_DROP_TEXT, + MORTAR_EVENT_DROP_BEGIN, + MORTAR_EVENT_DROP_COMPLETE, + MORTAR_EVENT_DROP_POSITION, + + MORTAR_EVENT_AUDIO_DEVICE_ADDED = 0x1100, + MORTAR_EVENT_AUDIO_DEVICE_REMOVED, + MORTAR_EVENT_AUDIO_DEVICE_FORMAT_CHANGED, + + MORTAR_EVENT_SENSOR_UPDATE = 0x1200, + + MORTAR_EVENT_PEN_PROXIMITY_IN = 0x1300, + MORTAR_EVENT_PEN_PROXIMITY_OUT, + MORTAR_EVENT_PEN_DOWN, + MORTAR_EVENT_PEN_UP, + MORTAR_EVENT_PEN_BUTTON_DOWN, + MORTAR_EVENT_PEN_BUTTON_UP, + MORTAR_EVENT_PEN_MOTION, + MORTAR_EVENT_PEN_AXIS, + + MORTAR_EVENT_CAMERA_DEVICE_ADDED = 0x1400, + MORTAR_EVENT_CAMERA_DEVICE_REMOVED, + MORTAR_EVENT_CAMERA_DEVICE_APPROVED, + MORTAR_EVENT_CAMERA_DEVICE_DENIED, + + MORTAR_EVENT_RENDER_TARGETS_RESET = 0x2000, + MORTAR_EVENT_RENDER_DEVICE_RESET, + MORTAR_EVENT_RENDER_DEVICE_LOST, + + MORTAR_EVENT_PRIVATE0 = 0x4000, + MORTAR_EVENT_PRIVATE1, + MORTAR_EVENT_PRIVATE2, + MORTAR_EVENT_PRIVATE3, + + MORTAR_EVENT_POLL_SENTINEL = 0x7F00, +#endif + + MORTAR_EVENT_USER = 0x8000, + +#if 0 + MORTAR_EVENT_LAST = 0xFFFF, + + MORTAR_EVENT_ENUM_PADDING = 0x7FFFFFFF +#endif + +} MORTAR_EventType; + +typedef struct MORTAR_CommonEvent { + MORTAR_EventType type; + uint32_t reserved; + uint64_t timestamp; /**< In nanoseconds, populated using MORTAR_GetTicksNS() */ +} MORTAR_CommonEvent; + +typedef struct MORTAR_WindowEvent { + MORTAR_EventType type; /**< MORTAR_EVENT_WINDOW_* */ + uint32_t reserved; + uint64_t timestamp; /**< In nanoseconds, populated using MORTAR_GetTicksNS() */ +#if 0 + MORTAR_WindowID windowID; /**< The associated window */ + int32_t data1; /**< event dependent data */ + int32_t data2; /**< event dependent data */ +#endif +} MORTAR_WindowEvent; + +typedef struct MORTAR_KeyboardDeviceEvent { + MORTAR_EventType type; /**< MORTAR_EVENT_KEYBOARD_ADDED or MORTAR_EVENT_KEYBOARD_REMOVED */ + uint32_t reserved; + uint64_t timestamp; /**< In nanoseconds, populated using MORTAR_GetTicksNS() */ + MORTAR_KeyboardID which; /**< The keyboard instance id */ +} MORTAR_KeyboardDeviceEvent; + +typedef struct MORTAR_KeyboardEvent { + MORTAR_EventType type; /**< MORTAR_EVENT_KEY_DOWN or MORTAR_EVENT_KEY_UP */ + uint32_t reserved; + uint64_t timestamp; /**< In nanoseconds, populated using MORTAR_GetTicksNS() */ +#if 0 + MORTAR_WindowID windowID; /**< The window with keyboard focus, if any */ +#endif + MORTAR_KeyboardID which; /**< The keyboard instance id, or 0 if unknown or virtual */ +#if 0 + MORTAR_Scancode scancode; /**< SDL physical key code */ +#endif + MORTAR_Keycode key; /**< SDL virtual key code */ + MORTAR_Keymod mod; /**< current key modifiers */ +#if 0 + uint16_t raw; /**< The platform dependent scancode for this event */ + bool down; /**< true if the key is pressed */ +#endif + bool repeat; /**< true if this is a key repeat */ +} MORTAR_KeyboardEvent; + +typedef struct MORTAR_MouseDeviceEvent { + MORTAR_EventType type; /**< MORTAR_EVENT_MOUSE_ADDED or MORTAR_EVENT_MOUSE_REMOVED */ + uint32_t reserved; + uint64_t timestamp; /**< In nanoseconds, populated using MORTAR_GetTicksNS() */ + MORTAR_MouseID which; /**< The mouse instance id */ +} MORTAR_MouseDeviceEvent; + +typedef struct MORTAR_MouseMotionEvent { + MORTAR_EventType type; /**< MORTAR_EVENT_MOUSE_MOTION */ + uint32_t reserved; + uint64_t timestamp; +#if 0 + MORTAR_WindowID windowID; /**< The window with mouse focus, if any */ +#endif + MORTAR_MouseID which; /**< The mouse instance id in relative mode, MORTAR_TOUCH_MOUSEID for touch events, or 0 */ + MORTAR_MouseButtonFlags state; /**< The current button state */ + float x; + float y; +#if 0 + float xrel; + float yrel; +#endif +} MORTAR_MouseMotionEvent; + +typedef struct MORTAR_MouseButtonEvent { + MORTAR_EventType type; + uint32_t reserved; + uint64_t timestamp; /**< In nanoseconds, populated using MORTAR_GetTicksNS() */ +#if 0 + MORTAR_WindowID windowID; /**< The window with mouse focus, if any */ +#endif + MORTAR_MouseID which; /**< The mouse instance id in relative mode, MORTAR_TOUCH_MOUSEID for touch events, or 0 */ +#if 0 + uint8_t button; /**< The mouse button index */ + bool down; /**< true if the button is pressed */ + uint8_t clicks; /**< 1 for single-click, 2 for double-click, etc. */ + uint8_t padding; +#endif + float x; + float y; +} MORTAR_MouseButtonEvent; + +typedef struct MORTAR_JoyDeviceEvent { + MORTAR_EventType type; /**< MORTAR_EVENT_JOYSTICK_ADDED or MORTAR_EVENT_JOYSTICK_REMOVED or + MORTAR_EVENT_JOYSTICK_UPDATE_COMPLETE */ + uint32_t reserved; + uint64_t timestamp; /**< In nanoseconds, populated using MORTAR_GetTicksNS() */ + MORTAR_JoystickID which; /**< The joystick instance id */ +} MORTAR_JoyDeviceEvent; + +typedef struct MORTAR_GamepadAxisEvent { + MORTAR_EventType type; /**< MORTAR_EVENT_GAMEPAD_AXIS_MOTION */ + uint32_t reserved; + uint64_t timestamp; /**< In nanoseconds, populated using MORTAR_GetTicksNS() */ + MORTAR_JoystickID which; /**< The joystick instance id */ + uint8_t axis; /**< The gamepad axis (MORTAR_GamepadAxis) */ +#if 0 + uint8_t padding1; + uint8_t padding2; + uint8_t padding3; +#endif + int16_t value; /**< The axis value (range: -32768 to 32767) */ + // uint16_t padding4; +} MORTAR_GamepadAxisEvent; + +typedef struct MORTAR_GamepadButtonEvent { + MORTAR_EventType type; /**< MORTAR_EVENT_GAMEPAD_BUTTON_DOWN or MORTAR_EVENT_GAMEPAD_BUTTON_UP */ + uint32_t reserved; + uint64_t timestamp; /**< In nanoseconds, populated using MORTAR_GetTicksNS() */ + MORTAR_JoystickID which; /**< The joystick instance id */ + uint8_t button; /**< The gamepad button (MORTAR_GamepadButton) */ +#if 0 + bool down; /**< true if the button is pressed */ + uint8_t padding1; + uint8_t padding2; +#endif +} MORTAR_GamepadButtonEvent; + +typedef struct MORTAR_QuitEvent { + MORTAR_EventType type; + uint32_t reserved; + uint64_t timestamp; +} MORTAR_QuitEvent; + +typedef struct MORTAR_UserEvent { + uint32_t type; /**< MORTAR_EVENT_USER through MORTAR_EVENT_LAST, uint32_t because these are not in the + MORTAR_EventType enumeration */ + uint32_t reserved; + uint64_t timestamp; /**< In nanoseconds, populated using MORTAR_GetTicksNS() */ +#if 0 + MORTAR_WindowID windowID; /**< The associated window if any */ +#endif + int32_t code; /**< User defined event code */ + void* data1; /**< User defined data pointer */ + void* data2; /**< User defined data pointer */ +} MORTAR_UserEvent; + +typedef struct MORTAR_TouchFingerEvent { + MORTAR_EventType type; + uint32_t reserved; + uint64_t timestamp; /**< In nanoseconds, populated using MORTAR_GetTicksNS() */ + MORTAR_TouchID touchID; /**< The touch device id */ + MORTAR_FingerID fingerID; + float x; /**< Normalized in the range 0...1 */ + float y; /**< Normalized in the range 0...1 */ +#if 0 + float dx; /**< Normalized in the range -1...1 */ + float dy; /**< Normalized in the range -1...1 */ + float pressure; /**< Normalized in the range 0...1 */ + MORTAR_WindowID windowID; /**< The window underneath the finger, if any */ +#endif +} MORTAR_TouchFingerEvent; + +typedef union MORTAR_Event { + MORTAR_EventType type; + MORTAR_CommonEvent common; +#if 0 + MORTAR_DisplayEvent display; +#endif + MORTAR_WindowEvent window; + MORTAR_KeyboardDeviceEvent kdevice; + MORTAR_KeyboardEvent key; +#if 0 + MORTAR_TextEditingEvent edit; + MORTAR_TextEditingCandidatesEvent edit_candidates; + MORTAR_TextInputEvent text; +#endif + MORTAR_MouseDeviceEvent mdevice; + MORTAR_MouseMotionEvent motion; + MORTAR_MouseButtonEvent button; +#if 0 + MORTAR_MouseWheelEvent wheel; +#endif + MORTAR_JoyDeviceEvent jdevice; +#if 0 + MORTAR_JoyAxisEvent jaxis; + MORTAR_JoyBallEvent jball; + MORTAR_JoyHatEvent jhat; + MORTAR_JoyButtonEvent jbutton; + MORTAR_JoyBatteryEvent jbattery; + MORTAR_GamepadDeviceEvent gdevice; +#endif + MORTAR_GamepadAxisEvent gaxis; + MORTAR_GamepadButtonEvent gbutton; +#if 0 + MORTAR_GamepadTouchpadEvent gtouchpad; + MORTAR_GamepadSensorEvent gsensor; + MORTAR_AudioDeviceEvent adevice; + MORTAR_CameraDeviceEvent cdevice; + MORTAR_SensorEvent sensor; +#endif + MORTAR_QuitEvent quit; + MORTAR_UserEvent user; + MORTAR_TouchFingerEvent tfinger; +#if 0 + MORTAR_PinchFingerEvent pinch; + MORTAR_PenProximityEvent pproximity; + MORTAR_PenTouchEvent ptouch; + MORTAR_PenMotionEvent pmotion; + MORTAR_PenButtonEvent pbutton; + MORTAR_PenAxisEvent paxis; + MORTAR_RenderEvent render; + MORTAR_DropEvent drop; + MORTAR_ClipboardEvent clipboard; +#endif +} MORTAR_Event; + +typedef bool (*MORTAR_EventFilter)(void* userdata, MORTAR_Event* event); + +extern MORTAR_DECLSPEC bool MORTAR_PushEvent(MORTAR_Event* event); + +extern MORTAR_DECLSPEC uint32_t MORTAR_RegisterEvents(int numevents); + +extern MORTAR_DECLSPEC bool MORTAR_AddEventWatch(MORTAR_EventFilter filter, void* userdata); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_filesystem.h b/mortar/include/mortar/mortar_filesystem.h new file mode 100644 index 00000000..e4c1da01 --- /dev/null +++ b/mortar/include/mortar/mortar_filesystem.h @@ -0,0 +1,46 @@ +#pragma once + +#include "mortar_begin.h" + +#include + +typedef uint32_t MORTAR_GlobFlags; + +typedef int64_t MORTAR_Time; + +typedef enum MORTAR_Folder { + MORTAR_FOLDER_DOCUMENTS +} MORTAR_Folder; + +typedef enum MORTAR_PathType { + MORTAR_PATHTYPE_NONE, + MORTAR_PATHTYPE_FILE, + MORTAR_PATHTYPE_DIRECTORY, + MORTAR_PATHTYPE_OTHER +} MORTAR_PathType; + +typedef struct MORTAR_PathInfo { + MORTAR_PathType type; + uint64_t size; + MORTAR_Time create_time; + MORTAR_Time modify_time; + MORTAR_Time access_time; +} MORTAR_PathInfo; + +extern MORTAR_DECLSPEC char** MORTAR_GlobDirectory(const char* path, const char* pattern, int* count); + +extern MORTAR_DECLSPEC bool MORTAR_GetPathInfo(const char* path, MORTAR_PathInfo* info); + +extern MORTAR_DECLSPEC bool MORTAR_RemovePath(const char* path); + +extern MORTAR_DECLSPEC bool MORTAR_RenamePath(const char* oldpath, const char* newpath); + +extern MORTAR_DECLSPEC const char* MORTAR_GetBasePath(void); + +extern MORTAR_DECLSPEC char* MORTAR_GetPrefPath(const char* org, const char* app); + +extern MORTAR_DECLSPEC const char* MORTAR_GetUserFolder(MORTAR_Folder folder); + +extern MORTAR_DECLSPEC bool MORTAR_CreateDirectory(const char* path); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_gamepad.h b/mortar/include/mortar/mortar_gamepad.h new file mode 100644 index 00000000..0c23d798 --- /dev/null +++ b/mortar/include/mortar/mortar_gamepad.h @@ -0,0 +1,73 @@ +#pragma once + +#include "mortar/mortar_joystick.h" +#include "mortar_begin.h" + +#include + +typedef struct MORTAR_Gamepad MORTAR_Gamepad; + +typedef enum MORTAR_GamepadButton { + MORTAR_GAMEPAD_BUTTON_INVALID = -1, + MORTAR_GAMEPAD_BUTTON_SOUTH, /**< Bottom face button (e.g. Xbox A button) */ + MORTAR_GAMEPAD_BUTTON_EAST, /**< Right face button (e.g. Xbox B button) */ + MORTAR_GAMEPAD_BUTTON_WEST, /**< Left face button (e.g. Xbox X button) */ + MORTAR_GAMEPAD_BUTTON_NORTH, /**< Top face button (e.g. Xbox Y button) */ + MORTAR_GAMEPAD_BUTTON_BACK, + MORTAR_GAMEPAD_BUTTON_GUIDE, + MORTAR_GAMEPAD_BUTTON_START, + MORTAR_GAMEPAD_BUTTON_LEFT_STICK, + MORTAR_GAMEPAD_BUTTON_RIGHT_STICK, + MORTAR_GAMEPAD_BUTTON_LEFT_SHOULDER, + MORTAR_GAMEPAD_BUTTON_RIGHT_SHOULDER, + MORTAR_GAMEPAD_BUTTON_DPAD_UP, + MORTAR_GAMEPAD_BUTTON_DPAD_DOWN, + MORTAR_GAMEPAD_BUTTON_DPAD_LEFT, + MORTAR_GAMEPAD_BUTTON_DPAD_RIGHT, + MORTAR_GAMEPAD_BUTTON_MISC1, /**< Additional button (e.g. Xbox Series X share button, PS5 microphone button, + Nintendo Switch Pro capture button, Amazon Luna microphone button, Google Stadia + capture button) */ + MORTAR_GAMEPAD_BUTTON_RIGHT_PADDLE1, /**< Upper or primary paddle, under your right hand (e.g. Xbox Elite paddle P1, + DualSense Edge RB button, Right Joy-Con SR button) */ + MORTAR_GAMEPAD_BUTTON_LEFT_PADDLE1, /**< Upper or primary paddle, under your left hand (e.g. Xbox Elite paddle P3, + DualSense Edge LB button, Left Joy-Con SL button) */ + MORTAR_GAMEPAD_BUTTON_RIGHT_PADDLE2, /**< Lower or secondary paddle, under your right hand (e.g. Xbox Elite paddle + P2, DualSense Edge right Fn button, Right Joy-Con SL button) */ + MORTAR_GAMEPAD_BUTTON_LEFT_PADDLE2, /**< Lower or secondary paddle, under your left hand (e.g. Xbox Elite paddle P4, + DualSense Edge left Fn button, Left Joy-Con SR button) */ + MORTAR_GAMEPAD_BUTTON_TOUCHPAD, /**< PS4/PS5 touchpad button */ + MORTAR_GAMEPAD_BUTTON_MISC2, /**< Additional button */ + MORTAR_GAMEPAD_BUTTON_MISC3, /**< Additional button (e.g. Nintendo GameCube left trigger click) */ + MORTAR_GAMEPAD_BUTTON_MISC4, /**< Additional button (e.g. Nintendo GameCube right trigger click) */ + MORTAR_GAMEPAD_BUTTON_MISC5, /**< Additional button */ + MORTAR_GAMEPAD_BUTTON_MISC6, /**< Additional button */ + MORTAR_GAMEPAD_BUTTON_COUNT +} MORTAR_GamepadButton; + +typedef enum MORTAR_GamepadAxis { + MORTAR_GAMEPAD_AXIS_INVALID = -1, + MORTAR_GAMEPAD_AXIS_LEFTX, + MORTAR_GAMEPAD_AXIS_LEFTY, + MORTAR_GAMEPAD_AXIS_RIGHTX, + MORTAR_GAMEPAD_AXIS_RIGHTY, + // MORTAR_GAMEPAD_AXIS_LEFT_TRIGGER, + MORTAR_GAMEPAD_AXIS_RIGHT_TRIGGER, + // MORTAR_GAMEPAD_AXIS_COUNT +} MORTAR_GamepadAxis; + +extern MORTAR_DECLSPEC MORTAR_Gamepad* MORTAR_OpenGamepad(MORTAR_JoystickID instance_id); + +extern MORTAR_DECLSPEC void MORTAR_CloseGamepad(MORTAR_Gamepad* gamepad); + +extern MORTAR_DECLSPEC int16_t MORTAR_GetGamepadAxis(MORTAR_Gamepad* gamepad, MORTAR_GamepadAxis axis); + +extern MORTAR_DECLSPEC MORTAR_Joystick* MORTAR_GetGamepadJoystick(MORTAR_Gamepad* gamepad); + +extern MORTAR_DECLSPEC bool MORTAR_RumbleGamepad( + MORTAR_Gamepad* gamepad, + uint16_t low_frequency_rumble, + uint16_t high_frequency_rumble, + uint32_t duration_ms +); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_haptic.h b/mortar/include/mortar/mortar_haptic.h new file mode 100644 index 00000000..8e8bc028 --- /dev/null +++ b/mortar/include/mortar/mortar_haptic.h @@ -0,0 +1,28 @@ +#pragma once + +#include "mortar/mortar_joystick.h" +#include "mortar_begin.h" + +#include + +typedef struct MORTAR_Haptic MORTAR_Haptic; + +typedef uint32_t MORTAR_HapticID; + +extern MORTAR_DECLSPEC bool MORTAR_InitHapticRumble(MORTAR_Haptic* haptic); + +extern MORTAR_DECLSPEC MORTAR_HapticID* MORTAR_GetHaptics(int* count); + +extern MORTAR_DECLSPEC MORTAR_Haptic* MORTAR_OpenHaptic(MORTAR_HapticID instance_id); + +extern MORTAR_DECLSPEC void MORTAR_CloseHaptic(MORTAR_Haptic* haptic); + +extern MORTAR_DECLSPEC MORTAR_Haptic* MORTAR_OpenHapticFromMouse(void); + +extern MORTAR_DECLSPEC MORTAR_Haptic* MORTAR_OpenHapticFromJoystick(MORTAR_Joystick* joystick); + +extern MORTAR_DECLSPEC bool MORTAR_PlayHapticRumble(MORTAR_Haptic* haptic, float strength, uint32_t length); + +extern MORTAR_DECLSPEC MORTAR_HapticID MORTAR_GetHapticID(MORTAR_Haptic* haptic); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_init.h b/mortar/include/mortar/mortar_init.h new file mode 100644 index 00000000..21368144 --- /dev/null +++ b/mortar/include/mortar/mortar_init.h @@ -0,0 +1,9 @@ +#pragma once + +#include "mortar_begin.h" + +extern MORTAR_DECLSPEC bool MORTAR_Init(void); + +extern MORTAR_DECLSPEC void MORTAR_Quit(void); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_iostream.h b/mortar/include/mortar/mortar_iostream.h new file mode 100644 index 00000000..821d41d9 --- /dev/null +++ b/mortar/include/mortar/mortar_iostream.h @@ -0,0 +1,45 @@ +#pragma once + +#include "mortar_begin.h" + +#include +#include + +typedef struct MORTAR_IOStream MORTAR_IOStream; + +typedef enum MORTAR_IOWhence { + MORTAR_IO_SEEK_SET, + MORTAR_IO_SEEK_CUR, + MORTAR_IO_SEEK_END +} MORTAR_IOWhence; + +typedef enum MORTAR_IOStatus { + MORTAR_IO_STATUS_READY, + MORTAR_IO_STATUS_ERROR, + MORTAR_IO_STATUS_EOF, + MORTAR_IO_STATUS_NOT_READY, + MORTAR_IO_STATUS_READONLY, + MORTAR_IO_STATUS_WRITEONLY +} MORTAR_IOStatus; + +extern MORTAR_DECLSPEC MORTAR_IOStream* MORTAR_IOFromFile(const char* file, const char* mode); + +extern MORTAR_DECLSPEC MORTAR_IOStream* MORTAR_IOFromMem(void* mem, size_t size); + +extern MORTAR_DECLSPEC size_t MORTAR_ReadIO(MORTAR_IOStream* context, void* ptr, size_t size); + +extern MORTAR_DECLSPEC size_t MORTAR_WriteIO(MORTAR_IOStream* context, const void* ptr, size_t size); + +extern MORTAR_DECLSPEC int64_t MORTAR_SeekIO(MORTAR_IOStream* context, int64_t offset, MORTAR_IOWhence whence); + +extern MORTAR_DECLSPEC int64_t MORTAR_TellIO(MORTAR_IOStream* context); + +extern MORTAR_DECLSPEC int64_t MORTAR_GetIOSize(MORTAR_IOStream* context); + +extern MORTAR_DECLSPEC bool MORTAR_CloseIO(MORTAR_IOStream* context); + +extern MORTAR_DECLSPEC MORTAR_IOStatus MORTAR_GetIOStatus(MORTAR_IOStream* context); + +extern MORTAR_DECLSPEC void* MORTAR_LoadFile(const char* file, size_t* datasize); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_joystick.h b/mortar/include/mortar/mortar_joystick.h new file mode 100644 index 00000000..831e4cc0 --- /dev/null +++ b/mortar/include/mortar/mortar_joystick.h @@ -0,0 +1,15 @@ +#pragma once + +#include "mortar_begin.h" + +#include + +#define MORTAR_JOYSTICK_AXIS_MAX 32767 + +typedef struct MORTAR_Joystick MORTAR_Joystick; + +typedef uint32_t MORTAR_JoystickID; + +extern MORTAR_DECLSPEC const char* MORTAR_GetJoystickNameForID(MORTAR_JoystickID instance_id); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_keyboard.h b/mortar/include/mortar/mortar_keyboard.h new file mode 100644 index 00000000..e76dea23 --- /dev/null +++ b/mortar/include/mortar/mortar_keyboard.h @@ -0,0 +1,11 @@ +#pragma once + +#include "mortar_begin.h" + +#include + +typedef uint32_t MORTAR_KeyboardID; + +extern MORTAR_DECLSPEC const bool* MORTAR_GetKeyboardState(int* numkeys); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_keycode.h b/mortar/include/mortar/mortar_keycode.h new file mode 100644 index 00000000..a7bc468b --- /dev/null +++ b/mortar/include/mortar/mortar_keycode.h @@ -0,0 +1,293 @@ +#pragma once + +#include "mortar_begin.h" + +#include + +typedef uint32_t MORTAR_Keycode; + +#define MORTARK_UNKNOWN 0x00000000u /**< 0 */ +#define MORTARK_RETURN 0x0000000du /**< '\r' */ +#define MORTARK_ESCAPE 0x0000001bu /**< '\x1B' */ +#define MORTARK_BACKSPACE 0x00000008u /**< '\b' */ +#define MORTARK_TAB 0x00000009u /**< '\t' */ +#define MORTARK_SPACE 0x00000020u /**< ' ' */ +#define MORTARK_EXCLAIM 0x00000021u /**< '!' */ +#define MORTARK_DBLAPOSTROPHE 0x00000022u /**< '"' */ +#define MORTARK_HASH 0x00000023u /**< '#' */ +#define MORTARK_DOLLAR 0x00000024u /**< '$' */ +#define MORTARK_PERCENT 0x00000025u /**< '%' */ +#define MORTARK_AMPERSAND 0x00000026u /**< '&' */ +#define MORTARK_APOSTROPHE 0x00000027u /**< '\'' */ +#define MORTARK_LEFTPAREN 0x00000028u /**< '(' */ +#define MORTARK_RIGHTPAREN 0x00000029u /**< ')' */ +#define MORTARK_ASTERISK 0x0000002au /**< '*' */ +#define MORTARK_PLUS 0x0000002bu /**< '+' */ +#define MORTARK_COMMA 0x0000002cu /**< ',' */ +#define MORTARK_MINUS 0x0000002du /**< '-' */ +#define MORTARK_PERIOD 0x0000002eu /**< '.' */ +#define MORTARK_SLASH 0x0000002fu /**< '/' */ +#define MORTARK_0 0x00000030u /**< '0' */ +#define MORTARK_1 0x00000031u /**< '1' */ +#define MORTARK_2 0x00000032u /**< '2' */ +#define MORTARK_3 0x00000033u /**< '3' */ +#define MORTARK_4 0x00000034u /**< '4' */ +#define MORTARK_5 0x00000035u /**< '5' */ +#define MORTARK_6 0x00000036u /**< '6' */ +#define MORTARK_7 0x00000037u /**< '7' */ +#define MORTARK_8 0x00000038u /**< '8' */ +#define MORTARK_9 0x00000039u /**< '9' */ +#define MORTARK_COLON 0x0000003au /**< ':' */ +#define MORTARK_SEMICOLON 0x0000003bu /**< ';' */ +#define MORTARK_LESS 0x0000003cu /**< '<' */ +#define MORTARK_EQUALS 0x0000003du /**< '=' */ +#define MORTARK_GREATER 0x0000003eu /**< '>' */ +#define MORTARK_QUESTION 0x0000003fu /**< '?' */ +#define MORTARK_AT 0x00000040u /**< '@' */ +#define MORTARK_LEFTBRACKET 0x0000005bu /**< '[' */ +#define MORTARK_BACKSLASH 0x0000005cu /**< '\\' */ +#define MORTARK_RIGHTBRACKET 0x0000005du /**< ']' */ +#define MORTARK_CARET 0x0000005eu /**< '^' */ +#define MORTARK_UNDERSCORE 0x0000005fu /**< '_' */ +#define MORTARK_GRAVE 0x00000060u /**< '`' */ +#define MORTARK_A 0x00000061u /**< 'a' */ +#define MORTARK_B 0x00000062u /**< 'b' */ +#define MORTARK_C 0x00000063u /**< 'c' */ +#define MORTARK_D 0x00000064u /**< 'd' */ +#define MORTARK_E 0x00000065u /**< 'e' */ +#define MORTARK_F 0x00000066u /**< 'f' */ +#define MORTARK_G 0x00000067u /**< 'g' */ +#define MORTARK_H 0x00000068u /**< 'h' */ +#define MORTARK_I 0x00000069u /**< 'i' */ +#define MORTARK_J 0x0000006au /**< 'j' */ +#define MORTARK_K 0x0000006bu /**< 'k' */ +#define MORTARK_L 0x0000006cu /**< 'l' */ +#define MORTARK_M 0x0000006du /**< 'm' */ +#define MORTARK_N 0x0000006eu /**< 'n' */ +#define MORTARK_O 0x0000006fu /**< 'o' */ +#define MORTARK_P 0x00000070u /**< 'p' */ +#define MORTARK_Q 0x00000071u /**< 'q' */ +#define MORTARK_R 0x00000072u /**< 'r' */ +#define MORTARK_S 0x00000073u /**< 's' */ +#define MORTARK_T 0x00000074u /**< 't' */ +#define MORTARK_U 0x00000075u /**< 'u' */ +#define MORTARK_V 0x00000076u /**< 'v' */ +#define MORTARK_W 0x00000077u /**< 'w' */ +#define MORTARK_X 0x00000078u /**< 'x' */ +#define MORTARK_Y 0x00000079u /**< 'y' */ +#define MORTARK_Z 0x0000007au /**< 'z' */ +#define MORTARK_LEFTBRACE 0x0000007bu /**< '{' */ +#define MORTARK_PIPE 0x0000007cu /**< '|' */ +#define MORTARK_RIGHTBRACE 0x0000007du /**< '}' */ +#define MORTARK_TILDE 0x0000007eu /**< '~' */ +#define MORTARK_DELETE 0x0000007fu /**< '\x7F' */ +#define MORTARK_PLUSMINUS 0x000000b1u /**< '\xB1' */ +#define MORTARK_CAPSLOCK 0x40000039u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_CAPSLOCK) */ +#define MORTARK_F1 0x4000003au /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F1) */ +#define MORTARK_F2 0x4000003bu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F2) */ +#define MORTARK_F3 0x4000003cu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F3) */ +#define MORTARK_F4 0x4000003du /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F4) */ +#define MORTARK_F5 0x4000003eu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F5) */ +#define MORTARK_F6 0x4000003fu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F6) */ +#define MORTARK_F7 0x40000040u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F7) */ +#define MORTARK_F8 0x40000041u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F8) */ +#define MORTARK_F9 0x40000042u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F9) */ +#define MORTARK_F10 0x40000043u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F10) */ +#define MORTARK_F11 0x40000044u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F11) */ +#define MORTARK_F12 0x40000045u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F12) */ +#define MORTARK_PRINTSCREEN 0x40000046u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_PRINTSCREEN) */ +#define MORTARK_SCROLLLOCK 0x40000047u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_SCROLLLOCK) */ +#define MORTARK_PAUSE 0x40000048u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_PAUSE) */ +#define MORTARK_INSERT 0x40000049u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_INSERT) */ +#define MORTARK_HOME 0x4000004au /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_HOME) */ +#define MORTARK_PAGEUP 0x4000004bu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_PAGEUP) */ +#define MORTARK_END 0x4000004du /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_END) */ +#define MORTARK_PAGEDOWN 0x4000004eu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_PAGEDOWN) */ +#define MORTARK_RIGHT 0x4000004fu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_RIGHT) */ +#define MORTARK_LEFT 0x40000050u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_LEFT) */ +#define MORTARK_DOWN 0x40000051u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_DOWN) */ +#define MORTARK_UP 0x40000052u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_UP) */ +#define MORTARK_NUMLOCKCLEAR 0x40000053u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_NUMLOCKCLEAR) */ +#define MORTARK_KP_DIVIDE 0x40000054u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_DIVIDE) */ +#define MORTARK_KP_MULTIPLY 0x40000055u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_MULTIPLY) */ +#define MORTARK_KP_MINUS 0x40000056u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_MINUS) */ +#define MORTARK_KP_PLUS 0x40000057u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_PLUS) */ +#define MORTARK_KP_ENTER 0x40000058u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_ENTER) */ +#define MORTARK_KP_1 0x40000059u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_1) */ +#define MORTARK_KP_2 0x4000005au /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_2) */ +#define MORTARK_KP_3 0x4000005bu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_3) */ +#define MORTARK_KP_4 0x4000005cu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_4) */ +#define MORTARK_KP_5 0x4000005du /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_5) */ +#define MORTARK_KP_6 0x4000005eu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_6) */ +#define MORTARK_KP_7 0x4000005fu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_7) */ +#define MORTARK_KP_8 0x40000060u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_8) */ +#define MORTARK_KP_9 0x40000061u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_9) */ +#define MORTARK_KP_0 0x40000062u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_0) */ +#define MORTARK_KP_PERIOD 0x40000063u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_PERIOD) */ +#define MORTARK_APPLICATION 0x40000065u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_APPLICATION) */ +#define MORTARK_POWER 0x40000066u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_POWER) */ +#define MORTARK_KP_EQUALS 0x40000067u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_EQUALS) */ +#define MORTARK_F13 0x40000068u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F13) */ +#define MORTARK_F14 0x40000069u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F14) */ +#define MORTARK_F15 0x4000006au /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F15) */ +#define MORTARK_F16 0x4000006bu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F16) */ +#define MORTARK_F17 0x4000006cu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F17) */ +#define MORTARK_F18 0x4000006du /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F18) */ +#define MORTARK_F19 0x4000006eu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F19) */ +#define MORTARK_F20 0x4000006fu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F20) */ +#define MORTARK_F21 0x40000070u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F21) */ +#define MORTARK_F22 0x40000071u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F22) */ +#define MORTARK_F23 0x40000072u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F23) */ +#define MORTARK_F24 0x40000073u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_F24) */ +#define MORTARK_EXECUTE 0x40000074u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_EXECUTE) */ +#define MORTARK_HELP 0x40000075u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_HELP) */ +#define MORTARK_MENU 0x40000076u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_MENU) */ +#define MORTARK_SELECT 0x40000077u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_SELECT) */ +#define MORTARK_STOP 0x40000078u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_STOP) */ +#define MORTARK_AGAIN 0x40000079u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_AGAIN) */ +#define MORTARK_UNDO 0x4000007au /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_UNDO) */ +#define MORTARK_CUT 0x4000007bu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_CUT) */ +#define MORTARK_COPY 0x4000007cu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_COPY) */ +#define MORTARK_PASTE 0x4000007du /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_PASTE) */ +#define MORTARK_FIND 0x4000007eu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_FIND) */ +#define MORTARK_MUTE 0x4000007fu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_MUTE) */ +#define MORTARK_VOLUMEUP 0x40000080u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_VOLUMEUP) */ +#define MORTARK_VOLUMEDOWN 0x40000081u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_VOLUMEDOWN) */ +#define MORTARK_KP_COMMA 0x40000085u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_COMMA) */ +#define MORTARK_KP_EQUALSAS400 0x40000086u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_EQUALSAS400) */ +#define MORTARK_ALTERASE 0x40000099u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_ALTERASE) */ +#define MORTARK_SYSREQ 0x4000009au /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_SYSREQ) */ +#define MORTARK_CANCEL 0x4000009bu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_CANCEL) */ +#define MORTARK_CLEAR 0x4000009cu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_CLEAR) */ +#define MORTARK_PRIOR 0x4000009du /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_PRIOR) */ +#define MORTARK_RETURN2 0x4000009eu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_RETURN2) */ +#define MORTARK_SEPARATOR 0x4000009fu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_SEPARATOR) */ +#define MORTARK_OUT 0x400000a0u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_OUT) */ +#define MORTARK_OPER 0x400000a1u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_OPER) */ +#define MORTARK_CLEARAGAIN 0x400000a2u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_CLEARAGAIN) */ +#define MORTARK_CRSEL 0x400000a3u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_CRSEL) */ +#define MORTARK_EXSEL 0x400000a4u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_EXSEL) */ +#define MORTARK_KP_00 0x400000b0u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_00) */ +#define MORTARK_KP_000 0x400000b1u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_000) */ +#define MORTARK_THOUSANDSSEPARATOR 0x400000b2u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_THOUSANDSSEPARATOR) */ +#define MORTARK_DECIMALSEPARATOR 0x400000b3u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_DECIMALSEPARATOR) */ +#define MORTARK_CURRENCYUNIT 0x400000b4u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_CURRENCYUNIT) */ +#define MORTARK_CURRENCYSUBUNIT 0x400000b5u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_CURRENCYSUBUNIT) */ +#define MORTARK_KP_LEFTPAREN 0x400000b6u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_LEFTPAREN) */ +#define MORTARK_KP_RIGHTPAREN 0x400000b7u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_RIGHTPAREN) */ +#define MORTARK_KP_LEFTBRACE 0x400000b8u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_LEFTBRACE) */ +#define MORTARK_KP_RIGHTBRACE 0x400000b9u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_RIGHTBRACE) */ +#define MORTARK_KP_TAB 0x400000bau /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_TAB) */ +#define MORTARK_KP_BACKSPACE 0x400000bbu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_BACKSPACE) */ +#define MORTARK_KP_A 0x400000bcu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_A) */ +#define MORTARK_KP_B 0x400000bdu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_B) */ +#define MORTARK_KP_C 0x400000beu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_C) */ +#define MORTARK_KP_D 0x400000bfu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_D) */ +#define MORTARK_KP_E 0x400000c0u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_E) */ +#define MORTARK_KP_F 0x400000c1u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_F) */ +#define MORTARK_KP_XOR 0x400000c2u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_XOR) */ +#define MORTARK_KP_POWER 0x400000c3u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_POWER) */ +#define MORTARK_KP_PERCENT 0x400000c4u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_PERCENT) */ +#define MORTARK_KP_LESS 0x400000c5u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_LESS) */ +#define MORTARK_KP_GREATER 0x400000c6u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_GREATER) */ +#define MORTARK_KP_AMPERSAND 0x400000c7u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_AMPERSAND) */ +#define MORTARK_KP_DBLAMPERSAND 0x400000c8u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_DBLAMPERSAND) */ +#define MORTARK_KP_VERTICALBAR 0x400000c9u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_VERTICALBAR) */ +#define MORTARK_KP_DBLVERTICALBAR 0x400000cau /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_DBLVERTICALBAR) */ +#define MORTARK_KP_COLON 0x400000cbu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_COLON) */ +#define MORTARK_KP_HASH 0x400000ccu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_HASH) */ +#define MORTARK_KP_SPACE 0x400000cdu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_SPACE) */ +#define MORTARK_KP_AT 0x400000ceu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_AT) */ +#define MORTARK_KP_EXCLAM 0x400000cfu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_EXCLAM) */ +#define MORTARK_KP_MEMSTORE 0x400000d0u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_MEMSTORE) */ +#define MORTARK_KP_MEMRECALL 0x400000d1u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_MEMRECALL) */ +#define MORTARK_KP_MEMCLEAR 0x400000d2u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_MEMCLEAR) */ +#define MORTARK_KP_MEMADD 0x400000d3u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_MEMADD) */ +#define MORTARK_KP_MEMSUBTRACT 0x400000d4u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_MEMSUBTRACT) */ +#define MORTARK_KP_MEMMULTIPLY 0x400000d5u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_MEMMULTIPLY) */ +#define MORTARK_KP_MEMDIVIDE 0x400000d6u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_MEMDIVIDE) */ +#define MORTARK_KP_PLUSMINUS 0x400000d7u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_PLUSMINUS) */ +#define MORTARK_KP_CLEAR 0x400000d8u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_CLEAR) */ +#define MORTARK_KP_CLEARENTRY 0x400000d9u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_CLEARENTRY) */ +#define MORTARK_KP_BINARY 0x400000dau /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_BINARY) */ +#define MORTARK_KP_OCTAL 0x400000dbu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_OCTAL) */ +#define MORTARK_KP_DECIMAL 0x400000dcu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_DECIMAL) */ +#define MORTARK_KP_HEXADECIMAL 0x400000ddu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_KP_HEXADECIMAL) */ +#define MORTARK_LCTRL 0x400000e0u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_LCTRL) */ +#define MORTARK_LSHIFT 0x400000e1u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_LSHIFT) */ +#define MORTARK_LALT 0x400000e2u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_LALT) */ +#define MORTARK_LGUI 0x400000e3u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_LGUI) */ +#define MORTARK_RCTRL 0x400000e4u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_RCTRL) */ +#define MORTARK_RSHIFT 0x400000e5u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_RSHIFT) */ +#define MORTARK_RALT 0x400000e6u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_RALT) */ +#define MORTARK_RGUI 0x400000e7u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_RGUI) */ +#define MORTARK_MODE 0x40000101u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_MODE) */ +#define MORTARK_SLEEP 0x40000102u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_SLEEP) */ +#define MORTARK_WAKE 0x40000103u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_WAKE) */ +#define MORTARK_CHANNEL_INCREMENT 0x40000104u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_CHANNEL_INCREMENT) */ +#define MORTARK_CHANNEL_DECREMENT 0x40000105u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_CHANNEL_DECREMENT) */ +#define MORTARK_MEDIA_PLAY 0x40000106u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_MEDIA_PLAY) */ +#define MORTARK_MEDIA_PAUSE 0x40000107u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_MEDIA_PAUSE) */ +#define MORTARK_MEDIA_RECORD 0x40000108u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_MEDIA_RECORD) */ +#define MORTARK_MEDIA_FAST_FORWARD 0x40000109u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_MEDIA_FAST_FORWARD) */ +#define MORTARK_MEDIA_REWIND 0x4000010au /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_MEDIA_REWIND) */ +#define MORTARK_MEDIA_NEXT_TRACK 0x4000010bu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_MEDIA_NEXT_TRACK) */ +#define MORTARK_MEDIA_PREVIOUS_TRACK \ + 0x4000010cu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_MEDIA_PREVIOUS_TRACK) */ +#define MORTARK_MEDIA_STOP 0x4000010du /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_MEDIA_STOP) */ +#define MORTARK_MEDIA_EJECT 0x4000010eu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_MEDIA_EJECT) */ +#define MORTARK_MEDIA_PLAY_PAUSE 0x4000010fu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_MEDIA_PLAY_PAUSE) */ +#define MORTARK_MEDIA_SELECT 0x40000110u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_MEDIA_SELECT) */ +#define MORTARK_AC_NEW 0x40000111u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_AC_NEW) */ +#define MORTARK_AC_OPEN 0x40000112u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_AC_OPEN) */ +#define MORTARK_AC_CLOSE 0x40000113u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_AC_CLOSE) */ +#define MORTARK_AC_EXIT 0x40000114u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_AC_EXIT) */ +#define MORTARK_AC_SAVE 0x40000115u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_AC_SAVE) */ +#define MORTARK_AC_PRINT 0x40000116u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_AC_PRINT) */ +#define MORTARK_AC_PROPERTIES 0x40000117u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_AC_PROPERTIES) */ +#define MORTARK_AC_SEARCH 0x40000118u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_AC_SEARCH) */ +#define MORTARK_AC_HOME 0x40000119u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_AC_HOME) */ +#define MORTARK_AC_BACK 0x4000011au /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_AC_BACK) */ +#define MORTARK_AC_FORWARD 0x4000011bu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_AC_FORWARD) */ +#define MORTARK_AC_STOP 0x4000011cu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_AC_STOP) */ +#define MORTARK_AC_REFRESH 0x4000011du /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_AC_REFRESH) */ +#define MORTARK_AC_BOOKMARKS 0x4000011eu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_AC_BOOKMARKS) */ +#define MORTARK_SOFTLEFT 0x4000011fu /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_SOFTLEFT) */ +#define MORTARK_SOFTRIGHT 0x40000120u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_SOFTRIGHT) */ +#define MORTARK_CALL 0x40000121u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_CALL) */ +#define MORTARK_ENDCALL 0x40000122u /**< MORTAR_SCANCODE_TO_KEYCODE(MORTAR_SCANCODE_ENDCALL) */ +#define MORTARK_LEFT_TAB 0x20000001u /**< Extended key Left Tab */ +#define MORTARK_LEVEL5_SHIFT 0x20000002u /**< Extended key Level 5 Shift */ +#define MORTARK_MULTI_KEY_COMPOSE 0x20000003u /**< Extended key Multi-key Compose */ +#define MORTARK_LMETA 0x20000004u /**< Extended key Left Meta */ +#define MORTARK_RMETA 0x20000005u /**< Extended key Right Meta */ +#define MORTARK_LHYPER 0x20000006u /**< Extended key Left Hyper */ +#define MORTARK_RHYPER 0x20000007u /**< Extended key Right Hyper */ + +/** + * Valid key modifiers (possibly OR'd together). + * + * \since This datatype is available since SDL 3.2.0. + */ +typedef uint16_t MORTAR_Keymod; + +#define MORTAR_KMOD_NONE 0x0000u /**< no modifier is applicable. */ +#define MORTAR_KMOD_LSHIFT 0x0001u /**< the left Shift key is down. */ +#define MORTAR_KMOD_RSHIFT 0x0002u /**< the right Shift key is down. */ +#define MORTAR_KMOD_LEVEL5 0x0004u /**< the Level 5 Shift key is down. */ +#define MORTAR_KMOD_LCTRL 0x0040u /**< the left Ctrl (Control) key is down. */ +#define MORTAR_KMOD_RCTRL 0x0080u /**< the right Ctrl (Control) key is down. */ +#define MORTAR_KMOD_LALT 0x0100u /**< the left Alt key is down. */ +#define MORTAR_KMOD_RALT 0x0200u /**< the right Alt key is down. */ +#define MORTAR_KMOD_LGUI 0x0400u /**< the left GUI key (often the Windows key) is down. */ +#define MORTAR_KMOD_RGUI 0x0800u /**< the right GUI key (often the Windows key) is down. */ +#define MORTAR_KMOD_NUM 0x1000u /**< the Num Lock key (may be located on an extended keypad) is down. */ +#define MORTAR_KMOD_CAPS 0x2000u /**< the Caps Lock key is down. */ +#define MORTAR_KMOD_MODE 0x4000u /**< the !AltGr key is down. */ +#define MORTAR_KMOD_SCROLL 0x8000u /**< the Scroll Lock key is down. */ +#define MORTAR_KMOD_CTRL (MORTAR_KMOD_LCTRL | MORTAR_KMOD_RCTRL) /**< Any Ctrl key is down. */ +#define MORTAR_KMOD_SHIFT (MORTAR_KMOD_LSHIFT | MORTAR_KMOD_RSHIFT) /**< Any Shift key is down. */ +#define MORTAR_KMOD_ALT (MORTAR_KMOD_LALT | MORTAR_KMOD_RALT) /**< Any Alt key is down. */ +#define MORTAR_KMOD_GUI (MORTAR_KMOD_LGUI | MORTAR_KMOD_RGUI) /**< Any GUI key is down. */ + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_log.h b/mortar/include/mortar/mortar_log.h new file mode 100644 index 00000000..e88cac56 --- /dev/null +++ b/mortar/include/mortar/mortar_log.h @@ -0,0 +1,35 @@ +#pragma once + +#include "mortar_begin.h" + +#include + +enum { + MORTAR_LOG_CATEGORY_APPLICATION, + MORTAR_LOG_CATEGORY_CUSTOM +}; + +typedef enum MORTAR_LogPriority { + MORTAR_LOG_PRIORITY_INVALID, + MORTAR_LOG_PRIORITY_TRACE, + MORTAR_LOG_PRIORITY_VERBOSE, + MORTAR_LOG_PRIORITY_DEBUG, + MORTAR_LOG_PRIORITY_INFO, + MORTAR_LOG_PRIORITY_WARN, + MORTAR_LOG_PRIORITY_ERROR, + MORTAR_LOG_PRIORITY_CRITICAL +} MORTAR_LogPriority; + +extern MORTAR_DECLSPEC void MORTAR_LogError(int category, const char* fmt, ...); + +extern MORTAR_DECLSPEC void MORTAR_LogWarn(int category, const char* fmt, ...); + +extern MORTAR_DECLSPEC void MORTAR_LogTrace(int category, const char* fmt, ...); + +extern MORTAR_DECLSPEC void MORTAR_LogInfo(int category, const char* fmt, ...); + +extern MORTAR_DECLSPEC void MORTAR_Log(const char* fmt, ...); + +extern MORTAR_DECLSPEC void MORTAR_LogMessageV(int category, MORTAR_LogPriority priority, const char* fmt, va_list ap); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_main.h b/mortar/include/mortar/mortar_main.h new file mode 100644 index 00000000..e1cf4bca --- /dev/null +++ b/mortar/include/mortar/mortar_main.h @@ -0,0 +1,25 @@ +#pragma once +#include "mortar/mortar_events.h" +#include "mortar_begin.h" + +typedef enum MORTAR_AppResult { + MORTAR_APP_CONTINUE, + MORTAR_APP_SUCCESS, + MORTAR_APP_FAILURE +} MORTAR_AppResult; + +typedef MORTAR_AppResult MORTAR_AppInit_cbfn(void** appstate, int argc, char* argv[]); +typedef MORTAR_AppResult MORTAR_AppIterate_cbfn(void* appstate); +typedef MORTAR_AppResult MORTAR_AppEvent_cbfn(void* appstate, MORTAR_Event* event); +typedef void MORTAR_AppQuit_cbfn(void* appstate, MORTAR_AppResult result); + +extern MORTAR_DECLSPEC int MORTAR_main( + int argc, + char* argv[], + MORTAR_AppInit_cbfn* init, + MORTAR_AppIterate_cbfn* iterate, + MORTAR_AppEvent_cbfn* event, + MORTAR_AppQuit_cbfn* quit +); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_messagebox.h b/mortar/include/mortar/mortar_messagebox.h new file mode 100644 index 00000000..791be1ec --- /dev/null +++ b/mortar/include/mortar/mortar_messagebox.h @@ -0,0 +1,23 @@ +#pragma once + +#include "mortar/mortar_video.h" +#include "mortar_begin.h" + +#include + +typedef uint32_t MORTAR_MessageBoxFlags; + +#define MORTAR_MESSAGEBOX_ERROR 0x00000010u +#define MORTAR_MESSAGEBOX_WARNING 0x00000020u +#define MORTAR_MESSAGEBOX_INFORMATION 0x00000040u +#define MORTAR_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT 0x00000080u +#define MORTAR_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT 0x00000100u + +extern MORTAR_DECLSPEC bool MORTAR_ShowSimpleMessageBox( + MORTAR_MessageBoxFlags flags, + const char* title, + const char* message, + MORTAR_Window* window +); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_mouse.h b/mortar/include/mortar/mortar_mouse.h new file mode 100644 index 00000000..fce0a04e --- /dev/null +++ b/mortar/include/mortar/mortar_mouse.h @@ -0,0 +1,65 @@ +#pragma once + +#include "mortar/mortar_video.h" +#include "mortar_begin.h" + +#include + +typedef uint32_t MORTAR_MouseID; + +#define MORTAR_BUTTON_LEFT 1 +#define MORTAR_BUTTON_MIDDLE 2 +#define MORTAR_BUTTON_RIGHT 3 +#define MORTAR_BUTTON_X1 4 +#define MORTAR_BUTTON_X2 5 +#define MORTAR_BUTTON_MASK(X) (1u << ((X) -1)) + +typedef enum MORTAR_MouseButtonFlags { + MORTAR_BUTTON_LMASK = MORTAR_BUTTON_MASK(MORTAR_BUTTON_LEFT), + MORTAR_BUTTON_MMASK = MORTAR_BUTTON_MASK(MORTAR_BUTTON_MIDDLE), + MORTAR_BUTTON_RMASK = MORTAR_BUTTON_MASK(MORTAR_BUTTON_RIGHT), + MORTAR_BUTTON_X1MASK = MORTAR_BUTTON_MASK(MORTAR_BUTTON_X1), + MORTAR_BUTTON_X2MASK = MORTAR_BUTTON_MASK(MORTAR_BUTTON_X2), +} MORTAR_MouseButtonFlags; + +typedef struct MORTAR_Cursor MORTAR_Cursor; + +typedef enum MORTAR_SystemCursor { + MORTAR_SYSTEM_CURSOR_DEFAULT, /**< Default cursor. Usually an arrow. */ + // MORTAR_SYSTEM_CURSOR_TEXT, /**< Text selection. Usually an I-beam. */ + MORTAR_SYSTEM_CURSOR_WAIT, /**< Wait. Usually an hourglass or watch or spinning ball. */ + // MORTAR_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair. */ + // MORTAR_SYSTEM_CURSOR_PROGRESS, /**< Program is busy but still interactive. Usually it's WAIT with an arrow. + //*/ MORTAR_SYSTEM_CURSOR_NWSE_RESIZE, /**< Double arrow pointing northwest and southeast. */ + // MORTAR_SYSTEM_CURSOR_NESW_RESIZE, /**< Double arrow pointing northeast and southwest. */ + // MORTAR_SYSTEM_CURSOR_EW_RESIZE, /**< Double arrow pointing west and east. */ + // MORTAR_SYSTEM_CURSOR_NS_RESIZE, /**< Double arrow pointing north and south. */ + // MORTAR_SYSTEM_CURSOR_MOVE, /**< Four pointed arrow pointing north, south, east, and west. */ + MORTAR_SYSTEM_CURSOR_NOT_ALLOWED, /**< Not permitted. Usually a slashed circle or crossbones. */ + // MORTAR_SYSTEM_CURSOR_POINTER, /**< Pointer that indicates a link. Usually a pointing hand. */ + // MORTAR_SYSTEM_CURSOR_NW_RESIZE, /**< Window resize top-left. This may be a single arrow or a double arrow + // like NWSE_RESIZE. */ MORTAR_SYSTEM_CURSOR_N_RESIZE, /**< Window resize top. May be NS_RESIZE. */ + // MORTAR_SYSTEM_CURSOR_NE_RESIZE, /**< Window resize top-right. May be NESW_RESIZE. */ + // MORTAR_SYSTEM_CURSOR_E_RESIZE, /**< Window resize right. May be EW_RESIZE. */ + // MORTAR_SYSTEM_CURSOR_SE_RESIZE, /**< Window resize bottom-right. May be NWSE_RESIZE. */ + // MORTAR_SYSTEM_CURSOR_S_RESIZE, /**< Window resize bottom. May be NS_RESIZE. */ + // MORTAR_SYSTEM_CURSOR_SW_RESIZE, /**< Window resize bottom-left. May be NESW_RESIZE. */ + // MORTAR_SYSTEM_CURSOR_W_RESIZE, /**< Window resize left. May be EW_RESIZE. */ + // MORTAR_SYSTEM_CURSOR_COUNT +} MORTAR_SystemCursor; + +extern MORTAR_DECLSPEC bool MORTAR_ShowCursor(void); + +extern MORTAR_DECLSPEC bool MORTAR_HideCursor(void); + +extern MORTAR_DECLSPEC void MORTAR_WarpMouseInWindow(MORTAR_Window* window, float x, float y); + +extern MORTAR_DECLSPEC bool MORTAR_SetCursor(MORTAR_Cursor* cursor); + +extern MORTAR_DECLSPEC MORTAR_Cursor* MORTAR_CreateSystemCursor(MORTAR_SystemCursor id); + +extern MORTAR_DECLSPEC MORTAR_MouseButtonFlags MORTAR_GetMouseState(float* x, float* y); + +#include "mortar_end.h" + +MORTAR_ENUM_FLAG_OPERATORS(MORTAR_MouseButtonFlags) diff --git a/mortar/include/mortar/mortar_mutex.h b/mortar/include/mortar/mortar_mutex.h new file mode 100644 index 00000000..1de5199a --- /dev/null +++ b/mortar/include/mortar/mortar_mutex.h @@ -0,0 +1,26 @@ +#pragma once + +#include "mortar_begin.h" + +#include + +typedef struct MORTAR_Mutex MORTAR_Mutex; +typedef struct MORTAR_Semaphore MORTAR_Semaphore; + +extern MORTAR_DECLSPEC MORTAR_Mutex* MORTAR_CreateMutex(void); + +extern MORTAR_DECLSPEC void MORTAR_LockMutex(MORTAR_Mutex* mutex); + +extern MORTAR_DECLSPEC void MORTAR_UnlockMutex(MORTAR_Mutex* mutex); + +extern MORTAR_DECLSPEC void MORTAR_DestroyMutex(MORTAR_Mutex* mutex); + +extern MORTAR_DECLSPEC MORTAR_Semaphore* MORTAR_CreateSemaphore(uint32_t initial_value); + +extern MORTAR_DECLSPEC void MORTAR_SignalSemaphore(MORTAR_Semaphore* sem); + +extern MORTAR_DECLSPEC void MORTAR_WaitSemaphore(MORTAR_Semaphore* sem); + +extern MORTAR_DECLSPEC void MORTAR_DestroySemaphore(MORTAR_Semaphore* sem); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_opengl.h b/mortar/include/mortar/mortar_opengl.h new file mode 100644 index 00000000..e3ea2740 --- /dev/null +++ b/mortar/include/mortar/mortar_opengl.h @@ -0,0 +1,2174 @@ +#pragma once + +/* Copied from libglvnd */ + +/* + * Mesa 3-D graphics library + * + * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. + * Copyright (C) 2009 VMware, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * 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 OR COPYRIGHT HOLDERS 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 __gl_h_ +#define __gl_h_ + +/********************************************************************** + * Begin system-specific stuff. + */ + +#if defined(_WIN32) && !defined(__WIN32__) && !defined(__CYGWIN__) +#define __WIN32__ +#endif + +#if defined(__WIN32__) && !defined(__CYGWIN__) +#if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */ +#define GLAPI __declspec(dllexport) +#elif (defined(_MSC_VER) || defined(__MINGW32__)) && \ + defined(_DLL) /* tag specifying we're building for DLL runtime support */ +#define GLAPI __declspec(dllimport) +#else /* for use with static link lib build of Win32 edition only */ +#define GLAPI extern +#endif +#if defined(__MINGW32__) && defined(GL_NO_STDCALL) || \ + defined(UNDER_CE \ + ) /* The generated DLLs by MingW with STDCALL are not compatible with the ones done by Microsoft's compilers */ +#define GLAPIENTRY +#else +#define GLAPIENTRY __stdcall +#endif +#elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */ +#define GLAPI extern +#define GLAPIENTRY __stdcall +#elif (defined(__GNUC__) && __GNUC__ >= 4) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) +#define GLAPI __attribute__((visibility("default"))) +#define GLAPIENTRY +#endif /* WIN32 && !CYGWIN */ + +/* + * WINDOWS: Include windows.h here to define APIENTRY. + * It is also useful when applications include this file by + * including only glut.h, since glut.h depends on windows.h. + * Applications needing to include windows.h with parms other + * than "WIN32_LEAN_AND_MEAN" may include windows.h before + * glut.h or gl.h. + */ +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#ifndef NOMINMAX +#define NOMINMAX +#endif +#include +#endif + +#ifndef GLAPI +#define GLAPI extern +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY +#endif + +#ifndef APIENTRY +#define APIENTRY GLAPIENTRY +#endif + +/* "P" suffix to be used for a pointer to a function */ +#ifndef APIENTRYP +#define APIENTRYP APIENTRY* +#endif + +#ifndef GLAPIENTRYP +#define GLAPIENTRYP GLAPIENTRY* +#endif + +/* + * End system-specific stuff. + **********************************************************************/ + +#ifdef __cplusplus +extern "C" +{ +#endif + +#define GL_VERSION_1_1 1 +#define GL_VERSION_1_2 1 +#define GL_VERSION_1_3 1 +#define GL_ARB_imaging 1 + + /* + * Datatypes + */ + typedef unsigned int GLenum; + typedef unsigned char GLboolean; + typedef unsigned int GLbitfield; + typedef void GLvoid; + typedef signed char GLbyte; /* 1-byte signed */ + typedef short GLshort; /* 2-byte signed */ + typedef int GLint; /* 4-byte signed */ + typedef unsigned char GLubyte; /* 1-byte unsigned */ + typedef unsigned short GLushort; /* 2-byte unsigned */ + typedef unsigned int GLuint; /* 4-byte unsigned */ + typedef int GLsizei; /* 4-byte signed */ + typedef float GLfloat; /* single precision float */ + typedef float GLclampf; /* single precision float in [0,1] */ + typedef double GLdouble; /* double precision float */ + typedef double GLclampd; /* double precision float in [0,1] */ + +/* + * Constants + */ + +/* Boolean values */ +#define GL_FALSE 0 +#define GL_TRUE 1 + +/* Data types */ +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_2_BYTES 0x1407 +#define GL_3_BYTES 0x1408 +#define GL_4_BYTES 0x1409 +#define GL_DOUBLE 0x140A + +/* Primitives */ +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_QUADS 0x0007 +#define GL_QUAD_STRIP 0x0008 +#define GL_POLYGON 0x0009 + +/* Vertex Arrays */ +#define GL_VERTEX_ARRAY 0x8074 +#define GL_NORMAL_ARRAY 0x8075 +#define GL_COLOR_ARRAY 0x8076 +#define GL_INDEX_ARRAY 0x8077 +#define GL_TEXTURE_COORD_ARRAY 0x8078 +#define GL_EDGE_FLAG_ARRAY 0x8079 +#define GL_VERTEX_ARRAY_SIZE 0x807A +#define GL_VERTEX_ARRAY_TYPE 0x807B +#define GL_VERTEX_ARRAY_STRIDE 0x807C +#define GL_NORMAL_ARRAY_TYPE 0x807E +#define GL_NORMAL_ARRAY_STRIDE 0x807F +#define GL_COLOR_ARRAY_SIZE 0x8081 +#define GL_COLOR_ARRAY_TYPE 0x8082 +#define GL_COLOR_ARRAY_STRIDE 0x8083 +#define GL_INDEX_ARRAY_TYPE 0x8085 +#define GL_INDEX_ARRAY_STRIDE 0x8086 +#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A +#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C +#define GL_VERTEX_ARRAY_POINTER 0x808E +#define GL_NORMAL_ARRAY_POINTER 0x808F +#define GL_COLOR_ARRAY_POINTER 0x8090 +#define GL_INDEX_ARRAY_POINTER 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 +#define GL_V2F 0x2A20 +#define GL_V3F 0x2A21 +#define GL_C4UB_V2F 0x2A22 +#define GL_C4UB_V3F 0x2A23 +#define GL_C3F_V3F 0x2A24 +#define GL_N3F_V3F 0x2A25 +#define GL_C4F_N3F_V3F 0x2A26 +#define GL_T2F_V3F 0x2A27 +#define GL_T4F_V4F 0x2A28 +#define GL_T2F_C4UB_V3F 0x2A29 +#define GL_T2F_C3F_V3F 0x2A2A +#define GL_T2F_N3F_V3F 0x2A2B +#define GL_T2F_C4F_N3F_V3F 0x2A2C +#define GL_T4F_C4F_N3F_V4F 0x2A2D + +/* Matrix Mode */ +#define GL_MATRIX_MODE 0x0BA0 +#define GL_MODELVIEW 0x1700 +#define GL_PROJECTION 0x1701 +#define GL_TEXTURE 0x1702 + +/* Points */ +#define GL_POINT_SMOOTH 0x0B10 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_POINT_SIZE_RANGE 0x0B12 + +/* Lines */ +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_STIPPLE 0x0B24 +#define GL_LINE_STIPPLE_PATTERN 0x0B25 +#define GL_LINE_STIPPLE_REPEAT 0x0B26 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_LINE_WIDTH_RANGE 0x0B22 + +/* Polygons */ +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_POLYGON_STIPPLE 0x0B42 +#define GL_EDGE_FLAG 0x0B43 +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_POLYGON_OFFSET_FILL 0x8037 + +/* Display Lists */ +#define GL_COMPILE 0x1300 +#define GL_COMPILE_AND_EXECUTE 0x1301 +#define GL_LIST_BASE 0x0B32 +#define GL_LIST_INDEX 0x0B33 +#define GL_LIST_MODE 0x0B30 + +/* Depth buffer */ +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_BITS 0x0D56 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_COMPONENT 0x1902 + +/* Lighting */ +#define GL_LIGHTING 0x0B50 +#define GL_LIGHT0 0x4000 +#define GL_LIGHT1 0x4001 +#define GL_LIGHT2 0x4002 +#define GL_LIGHT3 0x4003 +#define GL_LIGHT4 0x4004 +#define GL_LIGHT5 0x4005 +#define GL_LIGHT6 0x4006 +#define GL_LIGHT7 0x4007 +#define GL_SPOT_EXPONENT 0x1205 +#define GL_SPOT_CUTOFF 0x1206 +#define GL_CONSTANT_ATTENUATION 0x1207 +#define GL_LINEAR_ATTENUATION 0x1208 +#define GL_QUADRATIC_ATTENUATION 0x1209 +#define GL_AMBIENT 0x1200 +#define GL_DIFFUSE 0x1201 +#define GL_SPECULAR 0x1202 +#define GL_SHININESS 0x1601 +#define GL_EMISSION 0x1600 +#define GL_POSITION 0x1203 +#define GL_SPOT_DIRECTION 0x1204 +#define GL_AMBIENT_AND_DIFFUSE 0x1602 +#define GL_COLOR_INDEXES 0x1603 +#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 +#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 +#define GL_LIGHT_MODEL_AMBIENT 0x0B53 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_SHADE_MODEL 0x0B54 +#define GL_FLAT 0x1D00 +#define GL_SMOOTH 0x1D01 +#define GL_COLOR_MATERIAL 0x0B57 +#define GL_COLOR_MATERIAL_FACE 0x0B55 +#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 +#define GL_NORMALIZE 0x0BA1 + +/* User clipping planes */ +#define GL_CLIP_PLANE0 0x3000 +#define GL_CLIP_PLANE1 0x3001 +#define GL_CLIP_PLANE2 0x3002 +#define GL_CLIP_PLANE3 0x3003 +#define GL_CLIP_PLANE4 0x3004 +#define GL_CLIP_PLANE5 0x3005 + +/* Accumulation buffer */ +#define GL_ACCUM_RED_BITS 0x0D58 +#define GL_ACCUM_GREEN_BITS 0x0D59 +#define GL_ACCUM_BLUE_BITS 0x0D5A +#define GL_ACCUM_ALPHA_BITS 0x0D5B +#define GL_ACCUM_CLEAR_VALUE 0x0B80 +#define GL_ACCUM 0x0100 +#define GL_ADD 0x0104 +#define GL_LOAD 0x0101 +#define GL_MULT 0x0103 +#define GL_RETURN 0x0102 + +/* Alpha testing */ +#define GL_ALPHA_TEST 0x0BC0 +#define GL_ALPHA_TEST_REF 0x0BC2 +#define GL_ALPHA_TEST_FUNC 0x0BC1 + +/* Blending */ +#define GL_BLEND 0x0BE2 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND_DST 0x0BE0 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 + +/* Render Mode */ +#define GL_FEEDBACK 0x1C01 +#define GL_RENDER 0x1C00 +#define GL_SELECT 0x1C02 + +/* Feedback */ +#define GL_2D 0x0600 +#define GL_3D 0x0601 +#define GL_3D_COLOR 0x0602 +#define GL_3D_COLOR_TEXTURE 0x0603 +#define GL_4D_COLOR_TEXTURE 0x0604 +#define GL_POINT_TOKEN 0x0701 +#define GL_LINE_TOKEN 0x0702 +#define GL_LINE_RESET_TOKEN 0x0707 +#define GL_POLYGON_TOKEN 0x0703 +#define GL_BITMAP_TOKEN 0x0704 +#define GL_DRAW_PIXEL_TOKEN 0x0705 +#define GL_COPY_PIXEL_TOKEN 0x0706 +#define GL_PASS_THROUGH_TOKEN 0x0700 +#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 +#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 +#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 + +/* Selection */ +#define GL_SELECTION_BUFFER_POINTER 0x0DF3 +#define GL_SELECTION_BUFFER_SIZE 0x0DF4 + +/* Fog */ +#define GL_FOG 0x0B60 +#define GL_FOG_MODE 0x0B65 +#define GL_FOG_DENSITY 0x0B62 +#define GL_FOG_COLOR 0x0B66 +#define GL_FOG_INDEX 0x0B61 +#define GL_FOG_START 0x0B63 +#define GL_FOG_END 0x0B64 +#define GL_LINEAR 0x2601 +#define GL_EXP 0x0800 +#define GL_EXP2 0x0801 + +/* Logic Ops */ +#define GL_LOGIC_OP 0x0BF1 +#define GL_INDEX_LOGIC_OP 0x0BF1 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_CLEAR 0x1500 +#define GL_SET 0x150F +#define GL_COPY 0x1503 +#define GL_COPY_INVERTED 0x150C +#define GL_NOOP 0x1505 +#define GL_INVERT 0x150A +#define GL_AND 0x1501 +#define GL_NAND 0x150E +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_XOR 0x1506 +#define GL_EQUIV 0x1509 +#define GL_AND_REVERSE 0x1502 +#define GL_AND_INVERTED 0x1504 +#define GL_OR_REVERSE 0x150B +#define GL_OR_INVERTED 0x150D + +/* Stencil */ +#define GL_STENCIL_BITS 0x0D57 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STENCIL_INDEX 0x1901 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 + +/* Buffers, Pixel Drawing/Reading */ +#define GL_NONE 0 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +/*GL_FRONT 0x0404 */ +/*GL_BACK 0x0405 */ +/*GL_FRONT_AND_BACK 0x0408 */ +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_AUX0 0x0409 +#define GL_AUX1 0x040A +#define GL_AUX2 0x040B +#define GL_AUX3 0x040C +#define GL_COLOR_INDEX 0x1900 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_ALPHA_BITS 0x0D55 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_INDEX_BITS 0x0D51 +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_AUX_BUFFERS 0x0C00 +#define GL_READ_BUFFER 0x0C02 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_BITMAP 0x1A00 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_DITHER 0x0BD0 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 + +/* Implementation limits */ +#define GL_MAX_LIST_NESTING 0x0B31 +#define GL_MAX_EVAL_ORDER 0x0D30 +#define GL_MAX_LIGHTS 0x0D31 +#define GL_MAX_CLIP_PLANES 0x0D32 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 +#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 +#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 +#define GL_MAX_NAME_STACK_DEPTH 0x0D37 +#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 +#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B + +/* Gets */ +#define GL_ATTRIB_STACK_DEPTH 0x0BB0 +#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_CURRENT_INDEX 0x0B01 +#define GL_CURRENT_COLOR 0x0B00 +#define GL_CURRENT_NORMAL 0x0B02 +#define GL_CURRENT_RASTER_COLOR 0x0B04 +#define GL_CURRENT_RASTER_DISTANCE 0x0B09 +#define GL_CURRENT_RASTER_INDEX 0x0B05 +#define GL_CURRENT_RASTER_POSITION 0x0B07 +#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 +#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 +#define GL_CURRENT_TEXTURE_COORDS 0x0B03 +#define GL_INDEX_CLEAR_VALUE 0x0C20 +#define GL_INDEX_MODE 0x0C30 +#define GL_INDEX_WRITEMASK 0x0C21 +#define GL_MODELVIEW_MATRIX 0x0BA6 +#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 +#define GL_NAME_STACK_DEPTH 0x0D70 +#define GL_PROJECTION_MATRIX 0x0BA7 +#define GL_PROJECTION_STACK_DEPTH 0x0BA4 +#define GL_RENDER_MODE 0x0C40 +#define GL_RGBA_MODE 0x0C31 +#define GL_TEXTURE_MATRIX 0x0BA8 +#define GL_TEXTURE_STACK_DEPTH 0x0BA5 +#define GL_VIEWPORT 0x0BA2 + +/* Evaluators */ +#define GL_AUTO_NORMAL 0x0D80 +#define GL_MAP1_COLOR_4 0x0D90 +#define GL_MAP1_INDEX 0x0D91 +#define GL_MAP1_NORMAL 0x0D92 +#define GL_MAP1_TEXTURE_COORD_1 0x0D93 +#define GL_MAP1_TEXTURE_COORD_2 0x0D94 +#define GL_MAP1_TEXTURE_COORD_3 0x0D95 +#define GL_MAP1_TEXTURE_COORD_4 0x0D96 +#define GL_MAP1_VERTEX_3 0x0D97 +#define GL_MAP1_VERTEX_4 0x0D98 +#define GL_MAP2_COLOR_4 0x0DB0 +#define GL_MAP2_INDEX 0x0DB1 +#define GL_MAP2_NORMAL 0x0DB2 +#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 +#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 +#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 +#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 +#define GL_MAP2_VERTEX_3 0x0DB7 +#define GL_MAP2_VERTEX_4 0x0DB8 +#define GL_MAP1_GRID_DOMAIN 0x0DD0 +#define GL_MAP1_GRID_SEGMENTS 0x0DD1 +#define GL_MAP2_GRID_DOMAIN 0x0DD2 +#define GL_MAP2_GRID_SEGMENTS 0x0DD3 +#define GL_COEFF 0x0A00 +#define GL_ORDER 0x0A01 +#define GL_DOMAIN 0x0A02 + +/* Hints */ +#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 +#define GL_POINT_SMOOTH_HINT 0x0C51 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_FOG_HINT 0x0C54 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 + +/* Scissor box */ +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 + +/* Pixel Mode / Transfer */ +#define GL_MAP_COLOR 0x0D10 +#define GL_MAP_STENCIL 0x0D11 +#define GL_INDEX_SHIFT 0x0D12 +#define GL_INDEX_OFFSET 0x0D13 +#define GL_RED_SCALE 0x0D14 +#define GL_RED_BIAS 0x0D15 +#define GL_GREEN_SCALE 0x0D18 +#define GL_GREEN_BIAS 0x0D19 +#define GL_BLUE_SCALE 0x0D1A +#define GL_BLUE_BIAS 0x0D1B +#define GL_ALPHA_SCALE 0x0D1C +#define GL_ALPHA_BIAS 0x0D1D +#define GL_DEPTH_SCALE 0x0D1E +#define GL_DEPTH_BIAS 0x0D1F +#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 +#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 +#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 +#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 +#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 +#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 +#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 +#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 +#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 +#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 +#define GL_PIXEL_MAP_S_TO_S 0x0C71 +#define GL_PIXEL_MAP_I_TO_I 0x0C70 +#define GL_PIXEL_MAP_I_TO_R 0x0C72 +#define GL_PIXEL_MAP_I_TO_G 0x0C73 +#define GL_PIXEL_MAP_I_TO_B 0x0C74 +#define GL_PIXEL_MAP_I_TO_A 0x0C75 +#define GL_PIXEL_MAP_R_TO_R 0x0C76 +#define GL_PIXEL_MAP_G_TO_G 0x0C77 +#define GL_PIXEL_MAP_B_TO_B 0x0C78 +#define GL_PIXEL_MAP_A_TO_A 0x0C79 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_ZOOM_X 0x0D16 +#define GL_ZOOM_Y 0x0D17 + +/* Texture mapping */ +#define GL_TEXTURE_ENV 0x2300 +#define GL_TEXTURE_ENV_MODE 0x2200 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_ENV_COLOR 0x2201 +#define GL_TEXTURE_GEN_S 0x0C60 +#define GL_TEXTURE_GEN_T 0x0C61 +#define GL_TEXTURE_GEN_R 0x0C62 +#define GL_TEXTURE_GEN_Q 0x0C63 +#define GL_TEXTURE_GEN_MODE 0x2500 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_BORDER 0x1005 +#define GL_TEXTURE_COMPONENTS 0x1003 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE 0x8061 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_OBJECT_LINEAR 0x2401 +#define GL_OBJECT_PLANE 0x2501 +#define GL_EYE_LINEAR 0x2400 +#define GL_EYE_PLANE 0x2502 +#define GL_SPHERE_MAP 0x2402 +#define GL_DECAL 0x2101 +#define GL_MODULATE 0x2100 +#define GL_NEAREST 0x2600 +#define GL_REPEAT 0x2901 +#define GL_CLAMP 0x2900 +#define GL_S 0x2000 +#define GL_T 0x2001 +#define GL_R 0x2002 +#define GL_Q 0x2003 + +/* Utility */ +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 + +/* Errors */ +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_OUT_OF_MEMORY 0x0505 + +/* glPush/PopAttrib bits */ +#define GL_CURRENT_BIT 0x00000001 +#define GL_POINT_BIT 0x00000002 +#define GL_LINE_BIT 0x00000004 +#define GL_POLYGON_BIT 0x00000008 +#define GL_POLYGON_STIPPLE_BIT 0x00000010 +#define GL_PIXEL_MODE_BIT 0x00000020 +#define GL_LIGHTING_BIT 0x00000040 +#define GL_FOG_BIT 0x00000080 +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_ACCUM_BUFFER_BIT 0x00000200 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_VIEWPORT_BIT 0x00000800 +#define GL_TRANSFORM_BIT 0x00001000 +#define GL_ENABLE_BIT 0x00002000 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_HINT_BIT 0x00008000 +#define GL_EVAL_BIT 0x00010000 +#define GL_LIST_BIT 0x00020000 +#define GL_TEXTURE_BIT 0x00040000 +#define GL_SCISSOR_BIT 0x00080000 +#define GL_ALL_ATTRIB_BITS 0xFFFFFFFF + +/* OpenGL 1.1 */ +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_TEXTURE_PRIORITY 0x8066 +#define GL_TEXTURE_RESIDENT 0x8067 +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_ALPHA4 0x803B +#define GL_ALPHA8 0x803C +#define GL_ALPHA12 0x803D +#define GL_ALPHA16 0x803E +#define GL_LUMINANCE4 0x803F +#define GL_LUMINANCE8 0x8040 +#define GL_LUMINANCE12 0x8041 +#define GL_LUMINANCE16 0x8042 +#define GL_LUMINANCE4_ALPHA4 0x8043 +#define GL_LUMINANCE6_ALPHA2 0x8044 +#define GL_LUMINANCE8_ALPHA8 0x8045 +#define GL_LUMINANCE12_ALPHA4 0x8046 +#define GL_LUMINANCE12_ALPHA12 0x8047 +#define GL_LUMINANCE16_ALPHA16 0x8048 +#define GL_INTENSITY 0x8049 +#define GL_INTENSITY4 0x804A +#define GL_INTENSITY8 0x804B +#define GL_INTENSITY12 0x804C +#define GL_INTENSITY16 0x804D +#define GL_R3_G3_B2 0x2A10 +#define GL_RGB4 0x804F +#define GL_RGB5 0x8050 +#define GL_RGB8 0x8051 +#define GL_RGB10 0x8052 +#define GL_RGB12 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGBA2 0x8055 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGBA8 0x8058 +#define GL_RGB10_A2 0x8059 +#define GL_RGBA12 0x805A +#define GL_RGBA16 0x805B +#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 +#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 +#define GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFFF +#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF + + /* + * Miscellaneous + */ + + GLAPI void GLAPIENTRY glClearIndex(GLfloat c); + + GLAPI void GLAPIENTRY glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); + + GLAPI void GLAPIENTRY glClear(GLbitfield mask); + + GLAPI void GLAPIENTRY glIndexMask(GLuint mask); + + GLAPI void GLAPIENTRY glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + + GLAPI void GLAPIENTRY glAlphaFunc(GLenum func, GLclampf ref); + + GLAPI void GLAPIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor); + + GLAPI void GLAPIENTRY glLogicOp(GLenum opcode); + + GLAPI void GLAPIENTRY glCullFace(GLenum mode); + + GLAPI void GLAPIENTRY glFrontFace(GLenum mode); + + GLAPI void GLAPIENTRY glPointSize(GLfloat size); + + GLAPI void GLAPIENTRY glLineWidth(GLfloat width); + + GLAPI void GLAPIENTRY glLineStipple(GLint factor, GLushort pattern); + + GLAPI void GLAPIENTRY glPolygonMode(GLenum face, GLenum mode); + + GLAPI void GLAPIENTRY glPolygonOffset(GLfloat factor, GLfloat units); + + GLAPI void GLAPIENTRY glPolygonStipple(const GLubyte* mask); + + GLAPI void GLAPIENTRY glGetPolygonStipple(GLubyte* mask); + + GLAPI void GLAPIENTRY glEdgeFlag(GLboolean flag); + + GLAPI void GLAPIENTRY glEdgeFlagv(const GLboolean* flag); + + GLAPI void GLAPIENTRY glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + + GLAPI void GLAPIENTRY glClipPlane(GLenum plane, const GLdouble* equation); + + GLAPI void GLAPIENTRY glGetClipPlane(GLenum plane, GLdouble* equation); + + GLAPI void GLAPIENTRY glDrawBuffer(GLenum mode); + + GLAPI void GLAPIENTRY glReadBuffer(GLenum mode); + + GLAPI void GLAPIENTRY glEnable(GLenum cap); + + GLAPI void GLAPIENTRY glDisable(GLenum cap); + + GLAPI GLboolean GLAPIENTRY glIsEnabled(GLenum cap); + + GLAPI void GLAPIENTRY glEnableClientState(GLenum cap); /* 1.1 */ + + GLAPI void GLAPIENTRY glDisableClientState(GLenum cap); /* 1.1 */ + + GLAPI void GLAPIENTRY glGetBooleanv(GLenum pname, GLboolean* params); + + GLAPI void GLAPIENTRY glGetDoublev(GLenum pname, GLdouble* params); + + GLAPI void GLAPIENTRY glGetFloatv(GLenum pname, GLfloat* params); + + GLAPI void GLAPIENTRY glGetIntegerv(GLenum pname, GLint* params); + + GLAPI void GLAPIENTRY glPushAttrib(GLbitfield mask); + + GLAPI void GLAPIENTRY glPopAttrib(void); + + GLAPI void GLAPIENTRY glPushClientAttrib(GLbitfield mask); /* 1.1 */ + + GLAPI void GLAPIENTRY glPopClientAttrib(void); /* 1.1 */ + + GLAPI GLint GLAPIENTRY glRenderMode(GLenum mode); + + GLAPI GLenum GLAPIENTRY glGetError(void); + + GLAPI const GLubyte* GLAPIENTRY glGetString(GLenum name); + + GLAPI void GLAPIENTRY glFinish(void); + + GLAPI void GLAPIENTRY glFlush(void); + + GLAPI void GLAPIENTRY glHint(GLenum target, GLenum mode); + + /* + * Depth Buffer + */ + + GLAPI void GLAPIENTRY glClearDepth(GLclampd depth); + + GLAPI void GLAPIENTRY glDepthFunc(GLenum func); + + GLAPI void GLAPIENTRY glDepthMask(GLboolean flag); + + GLAPI void GLAPIENTRY glDepthRange(GLclampd near_val, GLclampd far_val); + + /* + * Accumulation Buffer + */ + + GLAPI void GLAPIENTRY glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + + GLAPI void GLAPIENTRY glAccum(GLenum op, GLfloat value); + + /* + * Transformation + */ + + GLAPI void GLAPIENTRY glMatrixMode(GLenum mode); + + GLAPI void GLAPIENTRY + glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val); + + GLAPI void GLAPIENTRY + glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val); + + GLAPI void GLAPIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height); + + GLAPI void GLAPIENTRY glPushMatrix(void); + + GLAPI void GLAPIENTRY glPopMatrix(void); + + GLAPI void GLAPIENTRY glLoadIdentity(void); + + GLAPI void GLAPIENTRY glLoadMatrixd(const GLdouble* m); + GLAPI void GLAPIENTRY glLoadMatrixf(const GLfloat* m); + + GLAPI void GLAPIENTRY glMultMatrixd(const GLdouble* m); + GLAPI void GLAPIENTRY glMultMatrixf(const GLfloat* m); + + GLAPI void GLAPIENTRY glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + GLAPI void GLAPIENTRY glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + + GLAPI void GLAPIENTRY glScaled(GLdouble x, GLdouble y, GLdouble z); + GLAPI void GLAPIENTRY glScalef(GLfloat x, GLfloat y, GLfloat z); + + GLAPI void GLAPIENTRY glTranslated(GLdouble x, GLdouble y, GLdouble z); + GLAPI void GLAPIENTRY glTranslatef(GLfloat x, GLfloat y, GLfloat z); + + /* + * Display Lists + */ + + GLAPI GLboolean GLAPIENTRY glIsList(GLuint list); + + GLAPI void GLAPIENTRY glDeleteLists(GLuint list, GLsizei range); + + GLAPI GLuint GLAPIENTRY glGenLists(GLsizei range); + + GLAPI void GLAPIENTRY glNewList(GLuint list, GLenum mode); + + GLAPI void GLAPIENTRY glEndList(void); + + GLAPI void GLAPIENTRY glCallList(GLuint list); + + GLAPI void GLAPIENTRY glCallLists(GLsizei n, GLenum type, const GLvoid* lists); + + GLAPI void GLAPIENTRY glListBase(GLuint base); + + /* + * Drawing Functions + */ + + GLAPI void GLAPIENTRY glBegin(GLenum mode); + + GLAPI void GLAPIENTRY glEnd(void); + + GLAPI void GLAPIENTRY glVertex2d(GLdouble x, GLdouble y); + GLAPI void GLAPIENTRY glVertex2f(GLfloat x, GLfloat y); + GLAPI void GLAPIENTRY glVertex2i(GLint x, GLint y); + GLAPI void GLAPIENTRY glVertex2s(GLshort x, GLshort y); + + GLAPI void GLAPIENTRY glVertex3d(GLdouble x, GLdouble y, GLdouble z); + GLAPI void GLAPIENTRY glVertex3f(GLfloat x, GLfloat y, GLfloat z); + GLAPI void GLAPIENTRY glVertex3i(GLint x, GLint y, GLint z); + GLAPI void GLAPIENTRY glVertex3s(GLshort x, GLshort y, GLshort z); + + GLAPI void GLAPIENTRY glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void GLAPIENTRY glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + GLAPI void GLAPIENTRY glVertex4i(GLint x, GLint y, GLint z, GLint w); + GLAPI void GLAPIENTRY glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); + + GLAPI void GLAPIENTRY glVertex2dv(const GLdouble* v); + GLAPI void GLAPIENTRY glVertex2fv(const GLfloat* v); + GLAPI void GLAPIENTRY glVertex2iv(const GLint* v); + GLAPI void GLAPIENTRY glVertex2sv(const GLshort* v); + + GLAPI void GLAPIENTRY glVertex3dv(const GLdouble* v); + GLAPI void GLAPIENTRY glVertex3fv(const GLfloat* v); + GLAPI void GLAPIENTRY glVertex3iv(const GLint* v); + GLAPI void GLAPIENTRY glVertex3sv(const GLshort* v); + + GLAPI void GLAPIENTRY glVertex4dv(const GLdouble* v); + GLAPI void GLAPIENTRY glVertex4fv(const GLfloat* v); + GLAPI void GLAPIENTRY glVertex4iv(const GLint* v); + GLAPI void GLAPIENTRY glVertex4sv(const GLshort* v); + + GLAPI void GLAPIENTRY glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); + GLAPI void GLAPIENTRY glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); + GLAPI void GLAPIENTRY glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); + GLAPI void GLAPIENTRY glNormal3i(GLint nx, GLint ny, GLint nz); + GLAPI void GLAPIENTRY glNormal3s(GLshort nx, GLshort ny, GLshort nz); + + GLAPI void GLAPIENTRY glNormal3bv(const GLbyte* v); + GLAPI void GLAPIENTRY glNormal3dv(const GLdouble* v); + GLAPI void GLAPIENTRY glNormal3fv(const GLfloat* v); + GLAPI void GLAPIENTRY glNormal3iv(const GLint* v); + GLAPI void GLAPIENTRY glNormal3sv(const GLshort* v); + + GLAPI void GLAPIENTRY glIndexd(GLdouble c); + GLAPI void GLAPIENTRY glIndexf(GLfloat c); + GLAPI void GLAPIENTRY glIndexi(GLint c); + GLAPI void GLAPIENTRY glIndexs(GLshort c); + GLAPI void GLAPIENTRY glIndexub(GLubyte c); /* 1.1 */ + + GLAPI void GLAPIENTRY glIndexdv(const GLdouble* c); + GLAPI void GLAPIENTRY glIndexfv(const GLfloat* c); + GLAPI void GLAPIENTRY glIndexiv(const GLint* c); + GLAPI void GLAPIENTRY glIndexsv(const GLshort* c); + GLAPI void GLAPIENTRY glIndexubv(const GLubyte* c); /* 1.1 */ + + GLAPI void GLAPIENTRY glColor3b(GLbyte red, GLbyte green, GLbyte blue); + GLAPI void GLAPIENTRY glColor3d(GLdouble red, GLdouble green, GLdouble blue); + GLAPI void GLAPIENTRY glColor3f(GLfloat red, GLfloat green, GLfloat blue); + GLAPI void GLAPIENTRY glColor3i(GLint red, GLint green, GLint blue); + GLAPI void GLAPIENTRY glColor3s(GLshort red, GLshort green, GLshort blue); + GLAPI void GLAPIENTRY glColor3ub(GLubyte red, GLubyte green, GLubyte blue); + GLAPI void GLAPIENTRY glColor3ui(GLuint red, GLuint green, GLuint blue); + GLAPI void GLAPIENTRY glColor3us(GLushort red, GLushort green, GLushort blue); + + GLAPI void GLAPIENTRY glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); + GLAPI void GLAPIENTRY glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); + GLAPI void GLAPIENTRY glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + GLAPI void GLAPIENTRY glColor4i(GLint red, GLint green, GLint blue, GLint alpha); + GLAPI void GLAPIENTRY glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); + GLAPI void GLAPIENTRY glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); + GLAPI void GLAPIENTRY glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); + GLAPI void GLAPIENTRY glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); + + GLAPI void GLAPIENTRY glColor3bv(const GLbyte* v); + GLAPI void GLAPIENTRY glColor3dv(const GLdouble* v); + GLAPI void GLAPIENTRY glColor3fv(const GLfloat* v); + GLAPI void GLAPIENTRY glColor3iv(const GLint* v); + GLAPI void GLAPIENTRY glColor3sv(const GLshort* v); + GLAPI void GLAPIENTRY glColor3ubv(const GLubyte* v); + GLAPI void GLAPIENTRY glColor3uiv(const GLuint* v); + GLAPI void GLAPIENTRY glColor3usv(const GLushort* v); + + GLAPI void GLAPIENTRY glColor4bv(const GLbyte* v); + GLAPI void GLAPIENTRY glColor4dv(const GLdouble* v); + GLAPI void GLAPIENTRY glColor4fv(const GLfloat* v); + GLAPI void GLAPIENTRY glColor4iv(const GLint* v); + GLAPI void GLAPIENTRY glColor4sv(const GLshort* v); + GLAPI void GLAPIENTRY glColor4ubv(const GLubyte* v); + GLAPI void GLAPIENTRY glColor4uiv(const GLuint* v); + GLAPI void GLAPIENTRY glColor4usv(const GLushort* v); + + GLAPI void GLAPIENTRY glTexCoord1d(GLdouble s); + GLAPI void GLAPIENTRY glTexCoord1f(GLfloat s); + GLAPI void GLAPIENTRY glTexCoord1i(GLint s); + GLAPI void GLAPIENTRY glTexCoord1s(GLshort s); + + GLAPI void GLAPIENTRY glTexCoord2d(GLdouble s, GLdouble t); + GLAPI void GLAPIENTRY glTexCoord2f(GLfloat s, GLfloat t); + GLAPI void GLAPIENTRY glTexCoord2i(GLint s, GLint t); + GLAPI void GLAPIENTRY glTexCoord2s(GLshort s, GLshort t); + + GLAPI void GLAPIENTRY glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); + GLAPI void GLAPIENTRY glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); + GLAPI void GLAPIENTRY glTexCoord3i(GLint s, GLint t, GLint r); + GLAPI void GLAPIENTRY glTexCoord3s(GLshort s, GLshort t, GLshort r); + + GLAPI void GLAPIENTRY glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); + GLAPI void GLAPIENTRY glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); + GLAPI void GLAPIENTRY glTexCoord4i(GLint s, GLint t, GLint r, GLint q); + GLAPI void GLAPIENTRY glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); + + GLAPI void GLAPIENTRY glTexCoord1dv(const GLdouble* v); + GLAPI void GLAPIENTRY glTexCoord1fv(const GLfloat* v); + GLAPI void GLAPIENTRY glTexCoord1iv(const GLint* v); + GLAPI void GLAPIENTRY glTexCoord1sv(const GLshort* v); + + GLAPI void GLAPIENTRY glTexCoord2dv(const GLdouble* v); + GLAPI void GLAPIENTRY glTexCoord2fv(const GLfloat* v); + GLAPI void GLAPIENTRY glTexCoord2iv(const GLint* v); + GLAPI void GLAPIENTRY glTexCoord2sv(const GLshort* v); + + GLAPI void GLAPIENTRY glTexCoord3dv(const GLdouble* v); + GLAPI void GLAPIENTRY glTexCoord3fv(const GLfloat* v); + GLAPI void GLAPIENTRY glTexCoord3iv(const GLint* v); + GLAPI void GLAPIENTRY glTexCoord3sv(const GLshort* v); + + GLAPI void GLAPIENTRY glTexCoord4dv(const GLdouble* v); + GLAPI void GLAPIENTRY glTexCoord4fv(const GLfloat* v); + GLAPI void GLAPIENTRY glTexCoord4iv(const GLint* v); + GLAPI void GLAPIENTRY glTexCoord4sv(const GLshort* v); + + GLAPI void GLAPIENTRY glRasterPos2d(GLdouble x, GLdouble y); + GLAPI void GLAPIENTRY glRasterPos2f(GLfloat x, GLfloat y); + GLAPI void GLAPIENTRY glRasterPos2i(GLint x, GLint y); + GLAPI void GLAPIENTRY glRasterPos2s(GLshort x, GLshort y); + + GLAPI void GLAPIENTRY glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); + GLAPI void GLAPIENTRY glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); + GLAPI void GLAPIENTRY glRasterPos3i(GLint x, GLint y, GLint z); + GLAPI void GLAPIENTRY glRasterPos3s(GLshort x, GLshort y, GLshort z); + + GLAPI void GLAPIENTRY glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void GLAPIENTRY glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + GLAPI void GLAPIENTRY glRasterPos4i(GLint x, GLint y, GLint z, GLint w); + GLAPI void GLAPIENTRY glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); + + GLAPI void GLAPIENTRY glRasterPos2dv(const GLdouble* v); + GLAPI void GLAPIENTRY glRasterPos2fv(const GLfloat* v); + GLAPI void GLAPIENTRY glRasterPos2iv(const GLint* v); + GLAPI void GLAPIENTRY glRasterPos2sv(const GLshort* v); + + GLAPI void GLAPIENTRY glRasterPos3dv(const GLdouble* v); + GLAPI void GLAPIENTRY glRasterPos3fv(const GLfloat* v); + GLAPI void GLAPIENTRY glRasterPos3iv(const GLint* v); + GLAPI void GLAPIENTRY glRasterPos3sv(const GLshort* v); + + GLAPI void GLAPIENTRY glRasterPos4dv(const GLdouble* v); + GLAPI void GLAPIENTRY glRasterPos4fv(const GLfloat* v); + GLAPI void GLAPIENTRY glRasterPos4iv(const GLint* v); + GLAPI void GLAPIENTRY glRasterPos4sv(const GLshort* v); + + GLAPI void GLAPIENTRY glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); + GLAPI void GLAPIENTRY glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); + GLAPI void GLAPIENTRY glRecti(GLint x1, GLint y1, GLint x2, GLint y2); + GLAPI void GLAPIENTRY glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); + + GLAPI void GLAPIENTRY glRectdv(const GLdouble* v1, const GLdouble* v2); + GLAPI void GLAPIENTRY glRectfv(const GLfloat* v1, const GLfloat* v2); + GLAPI void GLAPIENTRY glRectiv(const GLint* v1, const GLint* v2); + GLAPI void GLAPIENTRY glRectsv(const GLshort* v1, const GLshort* v2); + + /* + * Vertex Arrays (1.1) + */ + + GLAPI void GLAPIENTRY glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid* ptr); + + GLAPI void GLAPIENTRY glNormalPointer(GLenum type, GLsizei stride, const GLvoid* ptr); + + GLAPI void GLAPIENTRY glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid* ptr); + + GLAPI void GLAPIENTRY glIndexPointer(GLenum type, GLsizei stride, const GLvoid* ptr); + + GLAPI void GLAPIENTRY glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid* ptr); + + GLAPI void GLAPIENTRY glEdgeFlagPointer(GLsizei stride, const GLvoid* ptr); + + GLAPI void GLAPIENTRY glGetPointerv(GLenum pname, GLvoid** params); + + GLAPI void GLAPIENTRY glArrayElement(GLint i); + + GLAPI void GLAPIENTRY glDrawArrays(GLenum mode, GLint first, GLsizei count); + + GLAPI void GLAPIENTRY glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices); + + GLAPI void GLAPIENTRY glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid* pointer); + + /* + * Lighting + */ + + GLAPI void GLAPIENTRY glShadeModel(GLenum mode); + + GLAPI void GLAPIENTRY glLightf(GLenum light, GLenum pname, GLfloat param); + GLAPI void GLAPIENTRY glLighti(GLenum light, GLenum pname, GLint param); + GLAPI void GLAPIENTRY glLightfv(GLenum light, GLenum pname, const GLfloat* params); + GLAPI void GLAPIENTRY glLightiv(GLenum light, GLenum pname, const GLint* params); + + GLAPI void GLAPIENTRY glGetLightfv(GLenum light, GLenum pname, GLfloat* params); + GLAPI void GLAPIENTRY glGetLightiv(GLenum light, GLenum pname, GLint* params); + + GLAPI void GLAPIENTRY glLightModelf(GLenum pname, GLfloat param); + GLAPI void GLAPIENTRY glLightModeli(GLenum pname, GLint param); + GLAPI void GLAPIENTRY glLightModelfv(GLenum pname, const GLfloat* params); + GLAPI void GLAPIENTRY glLightModeliv(GLenum pname, const GLint* params); + + GLAPI void GLAPIENTRY glMaterialf(GLenum face, GLenum pname, GLfloat param); + GLAPI void GLAPIENTRY glMateriali(GLenum face, GLenum pname, GLint param); + GLAPI void GLAPIENTRY glMaterialfv(GLenum face, GLenum pname, const GLfloat* params); + GLAPI void GLAPIENTRY glMaterialiv(GLenum face, GLenum pname, const GLint* params); + + GLAPI void GLAPIENTRY glGetMaterialfv(GLenum face, GLenum pname, GLfloat* params); + GLAPI void GLAPIENTRY glGetMaterialiv(GLenum face, GLenum pname, GLint* params); + + GLAPI void GLAPIENTRY glColorMaterial(GLenum face, GLenum mode); + + /* + * Raster functions + */ + + GLAPI void GLAPIENTRY glPixelZoom(GLfloat xfactor, GLfloat yfactor); + + GLAPI void GLAPIENTRY glPixelStoref(GLenum pname, GLfloat param); + GLAPI void GLAPIENTRY glPixelStorei(GLenum pname, GLint param); + + GLAPI void GLAPIENTRY glPixelTransferf(GLenum pname, GLfloat param); + GLAPI void GLAPIENTRY glPixelTransferi(GLenum pname, GLint param); + + GLAPI void GLAPIENTRY glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat* values); + GLAPI void GLAPIENTRY glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint* values); + GLAPI void GLAPIENTRY glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort* values); + + GLAPI void GLAPIENTRY glGetPixelMapfv(GLenum map, GLfloat* values); + GLAPI void GLAPIENTRY glGetPixelMapuiv(GLenum map, GLuint* values); + GLAPI void GLAPIENTRY glGetPixelMapusv(GLenum map, GLushort* values); + + GLAPI void GLAPIENTRY glBitmap( + GLsizei width, + GLsizei height, + GLfloat xorig, + GLfloat yorig, + GLfloat xmove, + GLfloat ymove, + const GLubyte* bitmap + ); + + GLAPI void GLAPIENTRY + glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); + + GLAPI void GLAPIENTRY glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels); + + GLAPI void GLAPIENTRY glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); + + /* + * Stenciling + */ + + GLAPI void GLAPIENTRY glStencilFunc(GLenum func, GLint ref, GLuint mask); + + GLAPI void GLAPIENTRY glStencilMask(GLuint mask); + + GLAPI void GLAPIENTRY glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + + GLAPI void GLAPIENTRY glClearStencil(GLint s); + + /* + * Texture mapping + */ + + GLAPI void GLAPIENTRY glTexGend(GLenum coord, GLenum pname, GLdouble param); + GLAPI void GLAPIENTRY glTexGenf(GLenum coord, GLenum pname, GLfloat param); + GLAPI void GLAPIENTRY glTexGeni(GLenum coord, GLenum pname, GLint param); + + GLAPI void GLAPIENTRY glTexGendv(GLenum coord, GLenum pname, const GLdouble* params); + GLAPI void GLAPIENTRY glTexGenfv(GLenum coord, GLenum pname, const GLfloat* params); + GLAPI void GLAPIENTRY glTexGeniv(GLenum coord, GLenum pname, const GLint* params); + + GLAPI void GLAPIENTRY glGetTexGendv(GLenum coord, GLenum pname, GLdouble* params); + GLAPI void GLAPIENTRY glGetTexGenfv(GLenum coord, GLenum pname, GLfloat* params); + GLAPI void GLAPIENTRY glGetTexGeniv(GLenum coord, GLenum pname, GLint* params); + + GLAPI void GLAPIENTRY glTexEnvf(GLenum target, GLenum pname, GLfloat param); + GLAPI void GLAPIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param); + + GLAPI void GLAPIENTRY glTexEnvfv(GLenum target, GLenum pname, const GLfloat* params); + GLAPI void GLAPIENTRY glTexEnviv(GLenum target, GLenum pname, const GLint* params); + + GLAPI void GLAPIENTRY glGetTexEnvfv(GLenum target, GLenum pname, GLfloat* params); + GLAPI void GLAPIENTRY glGetTexEnviv(GLenum target, GLenum pname, GLint* params); + + GLAPI void GLAPIENTRY glTexParameterf(GLenum target, GLenum pname, GLfloat param); + GLAPI void GLAPIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param); + + GLAPI void GLAPIENTRY glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params); + GLAPI void GLAPIENTRY glTexParameteriv(GLenum target, GLenum pname, const GLint* params); + + GLAPI void GLAPIENTRY glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params); + GLAPI void GLAPIENTRY glGetTexParameteriv(GLenum target, GLenum pname, GLint* params); + + GLAPI void GLAPIENTRY glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat* params); + GLAPI void GLAPIENTRY glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint* params); + + GLAPI void GLAPIENTRY glTexImage1D( + GLenum target, + GLint level, + GLint internalFormat, + GLsizei width, + GLint border, + GLenum format, + GLenum type, + const GLvoid* pixels + ); + + GLAPI void GLAPIENTRY glTexImage2D( + GLenum target, + GLint level, + GLint internalFormat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const GLvoid* pixels + ); + + GLAPI void GLAPIENTRY glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid* pixels); + + /* 1.1 functions */ + + GLAPI void GLAPIENTRY glGenTextures(GLsizei n, GLuint* textures); + + GLAPI void GLAPIENTRY glDeleteTextures(GLsizei n, const GLuint* textures); + + GLAPI void GLAPIENTRY glBindTexture(GLenum target, GLuint texture); + + GLAPI void GLAPIENTRY glPrioritizeTextures(GLsizei n, const GLuint* textures, const GLclampf* priorities); + + GLAPI GLboolean GLAPIENTRY glAreTexturesResident(GLsizei n, const GLuint* textures, GLboolean* residences); + + GLAPI GLboolean GLAPIENTRY glIsTexture(GLuint texture); + + GLAPI void GLAPIENTRY glTexSubImage1D( + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const GLvoid* pixels + ); + + GLAPI void GLAPIENTRY glTexSubImage2D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const GLvoid* pixels + ); + + GLAPI void GLAPIENTRY + glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + + GLAPI void GLAPIENTRY glCopyTexImage2D( + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border + ); + + GLAPI void GLAPIENTRY + glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + + GLAPI void GLAPIENTRY glCopyTexSubImage2D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + + /* + * Evaluators + */ + + GLAPI void GLAPIENTRY + glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble* points); + GLAPI void GLAPIENTRY + glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat* points); + + GLAPI void GLAPIENTRY glMap2d( + GLenum target, + GLdouble u1, + GLdouble u2, + GLint ustride, + GLint uorder, + GLdouble v1, + GLdouble v2, + GLint vstride, + GLint vorder, + const GLdouble* points + ); + GLAPI void GLAPIENTRY glMap2f( + GLenum target, + GLfloat u1, + GLfloat u2, + GLint ustride, + GLint uorder, + GLfloat v1, + GLfloat v2, + GLint vstride, + GLint vorder, + const GLfloat* points + ); + + GLAPI void GLAPIENTRY glGetMapdv(GLenum target, GLenum query, GLdouble* v); + GLAPI void GLAPIENTRY glGetMapfv(GLenum target, GLenum query, GLfloat* v); + GLAPI void GLAPIENTRY glGetMapiv(GLenum target, GLenum query, GLint* v); + + GLAPI void GLAPIENTRY glEvalCoord1d(GLdouble u); + GLAPI void GLAPIENTRY glEvalCoord1f(GLfloat u); + + GLAPI void GLAPIENTRY glEvalCoord1dv(const GLdouble* u); + GLAPI void GLAPIENTRY glEvalCoord1fv(const GLfloat* u); + + GLAPI void GLAPIENTRY glEvalCoord2d(GLdouble u, GLdouble v); + GLAPI void GLAPIENTRY glEvalCoord2f(GLfloat u, GLfloat v); + + GLAPI void GLAPIENTRY glEvalCoord2dv(const GLdouble* u); + GLAPI void GLAPIENTRY glEvalCoord2fv(const GLfloat* u); + + GLAPI void GLAPIENTRY glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); + GLAPI void GLAPIENTRY glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); + + GLAPI void GLAPIENTRY glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); + GLAPI void GLAPIENTRY glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); + + GLAPI void GLAPIENTRY glEvalPoint1(GLint i); + + GLAPI void GLAPIENTRY glEvalPoint2(GLint i, GLint j); + + GLAPI void GLAPIENTRY glEvalMesh1(GLenum mode, GLint i1, GLint i2); + + GLAPI void GLAPIENTRY glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); + + /* + * Fog + */ + + GLAPI void GLAPIENTRY glFogf(GLenum pname, GLfloat param); + + GLAPI void GLAPIENTRY glFogi(GLenum pname, GLint param); + + GLAPI void GLAPIENTRY glFogfv(GLenum pname, const GLfloat* params); + + GLAPI void GLAPIENTRY glFogiv(GLenum pname, const GLint* params); + + /* + * Selection and Feedback + */ + + GLAPI void GLAPIENTRY glFeedbackBuffer(GLsizei size, GLenum type, GLfloat* buffer); + + GLAPI void GLAPIENTRY glPassThrough(GLfloat token); + + GLAPI void GLAPIENTRY glSelectBuffer(GLsizei size, GLuint* buffer); + + GLAPI void GLAPIENTRY glInitNames(void); + + GLAPI void GLAPIENTRY glLoadName(GLuint name); + + GLAPI void GLAPIENTRY glPushName(GLuint name); + + GLAPI void GLAPIENTRY glPopName(void); + + /* + * OpenGL 1.2 + */ + +#define GL_RESCALE_NORMAL 0x803A +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_TEXTURE_BINDING_3D 0x806A + + GLAPI void GLAPIENTRY + glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices); + + GLAPI void GLAPIENTRY glTexImage3D( + GLenum target, + GLint level, + GLint internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const GLvoid* pixels + ); + + GLAPI void GLAPIENTRY glTexSubImage3D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const GLvoid* pixels + ); + + GLAPI void GLAPIENTRY glCopyTexSubImage3D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + + typedef void(APIENTRYP PFNGLDRAWRANGEELEMENTSPROC)( + GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const GLvoid* indices + ); + typedef void(APIENTRYP PFNGLTEXIMAGE3DPROC)( + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const GLvoid* pixels + ); + typedef void(APIENTRYP PFNGLTEXSUBIMAGE3DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const GLvoid* pixels + ); + typedef void(APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + + /* + * GL_ARB_imaging + */ + +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_CONSTANT_BORDER 0x8151 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX 0x802E +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +#define GL_BLEND_EQUATION 0x8009 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_BLEND_COLOR 0x8005 + + GLAPI void GLAPIENTRY + glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid* table); + + GLAPI void GLAPIENTRY + glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid* data); + + GLAPI void GLAPIENTRY glColorTableParameteriv(GLenum target, GLenum pname, const GLint* params); + + GLAPI void GLAPIENTRY glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat* params); + + GLAPI void GLAPIENTRY glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + + GLAPI void GLAPIENTRY glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + + GLAPI void GLAPIENTRY glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid* table); + + GLAPI void GLAPIENTRY glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat* params); + + GLAPI void GLAPIENTRY glGetColorTableParameteriv(GLenum target, GLenum pname, GLint* params); + + GLAPI void GLAPIENTRY glBlendEquation(GLenum mode); + + GLAPI void GLAPIENTRY glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); + + GLAPI void GLAPIENTRY glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + + GLAPI void GLAPIENTRY glResetHistogram(GLenum target); + + GLAPI void GLAPIENTRY glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid* values); + + GLAPI void GLAPIENTRY glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat* params); + + GLAPI void GLAPIENTRY glGetHistogramParameteriv(GLenum target, GLenum pname, GLint* params); + + GLAPI void GLAPIENTRY glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + + GLAPI void GLAPIENTRY glResetMinmax(GLenum target); + + GLAPI void GLAPIENTRY glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid* values); + + GLAPI void GLAPIENTRY glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat* params); + + GLAPI void GLAPIENTRY glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint* params); + + GLAPI void GLAPIENTRY glConvolutionFilter1D( + GLenum target, + GLenum internalformat, + GLsizei width, + GLenum format, + GLenum type, + const GLvoid* image + ); + + GLAPI void GLAPIENTRY glConvolutionFilter2D( + GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const GLvoid* image + ); + + GLAPI void GLAPIENTRY glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + + GLAPI void GLAPIENTRY glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat* params); + + GLAPI void GLAPIENTRY glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + + GLAPI void GLAPIENTRY glConvolutionParameteriv(GLenum target, GLenum pname, const GLint* params); + + GLAPI void GLAPIENTRY + glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + + GLAPI void GLAPIENTRY + glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + + GLAPI void GLAPIENTRY glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid* image); + + GLAPI void GLAPIENTRY glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat* params); + + GLAPI void GLAPIENTRY glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint* params); + + GLAPI void GLAPIENTRY glSeparableFilter2D( + GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const GLvoid* row, + const GLvoid* column + ); + + GLAPI void GLAPIENTRY + glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid* row, GLvoid* column, GLvoid* span); + +/* + * OpenGL 1.3 + */ + +/* multitexture */ +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +/* texture_cube_map */ +#define GL_NORMAL_MAP 0x8511 +#define GL_REFLECTION_MAP 0x8512 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +/* texture_compression */ +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +/* multisample */ +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_MULTISAMPLE_BIT 0x20000000 +/* transpose_matrix */ +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +/* texture_env_combine */ +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_RGB 0x8582 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_SUBTRACT 0x84E7 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +/* texture_env_dot3 */ +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +/* texture_border_clamp */ +#define GL_CLAMP_TO_BORDER 0x812D + + GLAPI void GLAPIENTRY glActiveTexture(GLenum texture); + + GLAPI void GLAPIENTRY glClientActiveTexture(GLenum texture); + + GLAPI void GLAPIENTRY glCompressedTexImage1D( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const GLvoid* data + ); + + GLAPI void GLAPIENTRY glCompressedTexImage2D( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const GLvoid* data + ); + + GLAPI void GLAPIENTRY glCompressedTexImage3D( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const GLvoid* data + ); + + GLAPI void GLAPIENTRY glCompressedTexSubImage1D( + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const GLvoid* data + ); + + GLAPI void GLAPIENTRY glCompressedTexSubImage2D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const GLvoid* data + ); + + GLAPI void GLAPIENTRY glCompressedTexSubImage3D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const GLvoid* data + ); + + GLAPI void GLAPIENTRY glGetCompressedTexImage(GLenum target, GLint lod, GLvoid* img); + + GLAPI void GLAPIENTRY glMultiTexCoord1d(GLenum target, GLdouble s); + + GLAPI void GLAPIENTRY glMultiTexCoord1dv(GLenum target, const GLdouble* v); + + GLAPI void GLAPIENTRY glMultiTexCoord1f(GLenum target, GLfloat s); + + GLAPI void GLAPIENTRY glMultiTexCoord1fv(GLenum target, const GLfloat* v); + + GLAPI void GLAPIENTRY glMultiTexCoord1i(GLenum target, GLint s); + + GLAPI void GLAPIENTRY glMultiTexCoord1iv(GLenum target, const GLint* v); + + GLAPI void GLAPIENTRY glMultiTexCoord1s(GLenum target, GLshort s); + + GLAPI void GLAPIENTRY glMultiTexCoord1sv(GLenum target, const GLshort* v); + + GLAPI void GLAPIENTRY glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); + + GLAPI void GLAPIENTRY glMultiTexCoord2dv(GLenum target, const GLdouble* v); + + GLAPI void GLAPIENTRY glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); + + GLAPI void GLAPIENTRY glMultiTexCoord2fv(GLenum target, const GLfloat* v); + + GLAPI void GLAPIENTRY glMultiTexCoord2i(GLenum target, GLint s, GLint t); + + GLAPI void GLAPIENTRY glMultiTexCoord2iv(GLenum target, const GLint* v); + + GLAPI void GLAPIENTRY glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); + + GLAPI void GLAPIENTRY glMultiTexCoord2sv(GLenum target, const GLshort* v); + + GLAPI void GLAPIENTRY glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); + + GLAPI void GLAPIENTRY glMultiTexCoord3dv(GLenum target, const GLdouble* v); + + GLAPI void GLAPIENTRY glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); + + GLAPI void GLAPIENTRY glMultiTexCoord3fv(GLenum target, const GLfloat* v); + + GLAPI void GLAPIENTRY glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); + + GLAPI void GLAPIENTRY glMultiTexCoord3iv(GLenum target, const GLint* v); + + GLAPI void GLAPIENTRY glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); + + GLAPI void GLAPIENTRY glMultiTexCoord3sv(GLenum target, const GLshort* v); + + GLAPI void GLAPIENTRY glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + + GLAPI void GLAPIENTRY glMultiTexCoord4dv(GLenum target, const GLdouble* v); + + GLAPI void GLAPIENTRY glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + + GLAPI void GLAPIENTRY glMultiTexCoord4fv(GLenum target, const GLfloat* v); + + GLAPI void GLAPIENTRY glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); + + GLAPI void GLAPIENTRY glMultiTexCoord4iv(GLenum target, const GLint* v); + + GLAPI void GLAPIENTRY glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + + GLAPI void GLAPIENTRY glMultiTexCoord4sv(GLenum target, const GLshort* v); + + GLAPI void GLAPIENTRY glLoadTransposeMatrixd(const GLdouble m[16]); + + GLAPI void GLAPIENTRY glLoadTransposeMatrixf(const GLfloat m[16]); + + GLAPI void GLAPIENTRY glMultTransposeMatrixd(const GLdouble m[16]); + + GLAPI void GLAPIENTRY glMultTransposeMatrixf(const GLfloat m[16]); + + GLAPI void GLAPIENTRY glSampleCoverage(GLclampf value, GLboolean invert); + + typedef void(APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture); + typedef void(APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLclampf value, GLboolean invert); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const GLvoid* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const GLvoid* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const GLvoid* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const GLvoid* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const GLvoid* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const GLvoid* data + ); + typedef void(APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, GLvoid* img); + +/* + * GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1) + */ +#ifndef GL_ARB_multitexture +#define GL_ARB_multitexture 1 + +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31_ARB 0x84DF +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 + + GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture); + GLAPI void GLAPIENTRY glClientActiveTextureARB(GLenum texture); + GLAPI void GLAPIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s); + GLAPI void GLAPIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble* v); + GLAPI void GLAPIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s); + GLAPI void GLAPIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat* v); + GLAPI void GLAPIENTRY glMultiTexCoord1iARB(GLenum target, GLint s); + GLAPI void GLAPIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint* v); + GLAPI void GLAPIENTRY glMultiTexCoord1sARB(GLenum target, GLshort s); + GLAPI void GLAPIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort* v); + GLAPI void GLAPIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t); + GLAPI void GLAPIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble* v); + GLAPI void GLAPIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t); + GLAPI void GLAPIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat* v); + GLAPI void GLAPIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t); + GLAPI void GLAPIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint* v); + GLAPI void GLAPIENTRY glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t); + GLAPI void GLAPIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort* v); + GLAPI void GLAPIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r); + GLAPI void GLAPIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble* v); + GLAPI void GLAPIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r); + GLAPI void GLAPIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat* v); + GLAPI void GLAPIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r); + GLAPI void GLAPIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint* v); + GLAPI void GLAPIENTRY glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r); + GLAPI void GLAPIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort* v); + GLAPI void GLAPIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + GLAPI void GLAPIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble* v); + GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat* v); + GLAPI void GLAPIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q); + GLAPI void GLAPIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint* v); + GLAPI void GLAPIENTRY glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + GLAPI void GLAPIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort* v); + + typedef void(APIENTRYP PFNGLACTIVETEXTUREARBPROC)(GLenum texture); + typedef void(APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC)(GLenum texture); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1DARBPROC)(GLenum target, GLdouble s); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC)(GLenum target, const GLdouble* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1FARBPROC)(GLenum target, GLfloat s); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC)(GLenum target, const GLfloat* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1IARBPROC)(GLenum target, GLint s); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC)(GLenum target, const GLint* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1SARBPROC)(GLenum target, GLshort s); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC)(GLenum target, const GLshort* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2DARBPROC)(GLenum target, GLdouble s, GLdouble t); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC)(GLenum target, const GLdouble* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2FARBPROC)(GLenum target, GLfloat s, GLfloat t); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC)(GLenum target, const GLfloat* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2IARBPROC)(GLenum target, GLint s, GLint t); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC)(GLenum target, const GLint* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2SARBPROC)(GLenum target, GLshort s, GLshort t); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC)(GLenum target, const GLshort* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3DARBPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC)(GLenum target, const GLdouble* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3FARBPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC)(GLenum target, const GLfloat* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3IARBPROC)(GLenum target, GLint s, GLint t, GLint r); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC)(GLenum target, const GLint* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3SARBPROC)(GLenum target, GLshort s, GLshort t, GLshort r); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC)(GLenum target, const GLshort* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4DARBPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC)(GLenum target, const GLdouble* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4FARBPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC)(GLenum target, const GLfloat* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4IARBPROC)(GLenum target, GLint s, GLint t, GLint r, GLint q); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC)(GLenum target, const GLint* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4SARBPROC)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC)(GLenum target, const GLshort* v); + +#endif /* GL_ARB_multitexture */ + +/* + * Define this token if you want "old-style" header file behaviour (extensions + * defined in gl.h). Otherwise, extensions will be included from glext.h. + */ +#if defined(GL_GLEXT_LEGACY) + + /* All extensions that used to be here are now found in glext.h */ + +#else /* GL_GLEXT_LEGACY */ + +#include "mortar/mortar_opengl_glcorearb.h" +#include "mortar/mortar_opengl_glext.h" + +#endif /* GL_GLEXT_LEGACY */ + +#ifdef __cplusplus +} +#endif + +#endif /* __gl_h_ */ diff --git a/mortar/include/mortar/mortar_opengl_glcorearb.h b/mortar/include/mortar/mortar_opengl_glcorearb.h new file mode 100644 index 00000000..89aa5b61 --- /dev/null +++ b/mortar/include/mortar/mortar_opengl_glcorearb.h @@ -0,0 +1,11269 @@ +#ifndef __gl_glcorearb_h_ +#define __gl_glcorearb_h_ 1 + +#ifdef __cplusplus +extern "C" +{ +#endif + + /* + ** Copyright 2013-2025 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 +#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 . + ** + ** 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 and either of or + ** 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 +#define GL_VERSION_1_0 1 + typedef void GLvoid; + typedef unsigned int GLenum; +#include + 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_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_FALSE 0 +#define GL_TRUE 1 +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_QUADS 0x0007 +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_NONE 0 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_VIEWPORT 0x0BA2 +#define GL_DITHER 0x0BD0 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND 0x0BE2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_READ_BUFFER 0x0C02 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_CLEAR 0x1500 +#define GL_AND 0x1501 +#define GL_AND_REVERSE 0x1502 +#define GL_COPY 0x1503 +#define GL_AND_INVERTED 0x1504 +#define GL_NOOP 0x1505 +#define GL_XOR 0x1506 +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_EQUIV 0x1509 +#define GL_INVERT 0x150A +#define GL_OR_REVERSE 0x150B +#define GL_COPY_INVERTED 0x150C +#define GL_OR_INVERTED 0x150D +#define GL_NAND 0x150E +#define GL_SET 0x150F +#define GL_TEXTURE 0x1702 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_STENCIL_INDEX 0x1901 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_REPEAT 0x2901 + typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode); + typedef void(APIENTRYP PFNGLFRONTFACEPROC)(GLenum mode); + typedef void(APIENTRYP PFNGLHINTPROC)(GLenum target, GLenum mode); + typedef void(APIENTRYP PFNGLLINEWIDTHPROC)(GLfloat width); + typedef void(APIENTRYP PFNGLPOINTSIZEPROC)(GLfloat size); + typedef void(APIENTRYP PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode); + typedef void(APIENTRYP PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); + typedef void(APIENTRYP PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLTEXIMAGE1DPROC)( + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + 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 PFNGLDRAWBUFFERPROC)(GLenum buf); + typedef void(APIENTRYP PFNGLCLEARPROC)(GLbitfield mask); + typedef void(APIENTRYP PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + typedef void(APIENTRYP PFNGLCLEARSTENCILPROC)(GLint s); + typedef void(APIENTRYP PFNGLCLEARDEPTHPROC)(GLdouble depth); + typedef void(APIENTRYP PFNGLSTENCILMASKPROC)(GLuint mask); + typedef void(APIENTRYP PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + typedef void(APIENTRYP PFNGLDEPTHMASKPROC)(GLboolean flag); + typedef void(APIENTRYP PFNGLDISABLEPROC)(GLenum cap); + typedef void(APIENTRYP PFNGLENABLEPROC)(GLenum cap); + typedef void(APIENTRYP PFNGLFINISHPROC)(void); + typedef void(APIENTRYP PFNGLFLUSHPROC)(void); + typedef void(APIENTRYP PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); + typedef void(APIENTRYP PFNGLLOGICOPPROC)(GLenum opcode); + typedef void(APIENTRYP PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); + typedef void(APIENTRYP PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); + typedef void(APIENTRYP PFNGLDEPTHFUNCPROC)(GLenum func); + typedef void(APIENTRYP PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLREADBUFFERPROC)(GLenum src); + typedef void(APIENTRYP PFNGLREADPIXELSPROC)( + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + void* pixels + ); + typedef void(APIENTRYP PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean* data); + typedef void(APIENTRYP PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble* data); + typedef GLenum(APIENTRYP PFNGLGETERRORPROC)(void); + typedef void(APIENTRYP PFNGLGETFLOATVPROC)(GLenum pname, GLfloat* data); + typedef void(APIENTRYP PFNGLGETINTEGERVPROC)(GLenum pname, GLint* data); + typedef const GLubyte*(APIENTRYP PFNGLGETSTRINGPROC)(GLenum name); + typedef void(APIENTRYP PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, void* pixels); + typedef void(APIENTRYP PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, GLenum pname, GLint* params); + typedef GLboolean(APIENTRYP PFNGLISENABLEDPROC)(GLenum cap); + typedef void(APIENTRYP PFNGLDEPTHRANGEPROC)(GLdouble n, GLdouble f); + typedef void(APIENTRYP PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glCullFace(GLenum mode); + GLAPI void APIENTRY glFrontFace(GLenum mode); + GLAPI void APIENTRY glHint(GLenum target, GLenum mode); + GLAPI void APIENTRY glLineWidth(GLfloat width); + GLAPI void APIENTRY glPointSize(GLfloat size); + GLAPI void APIENTRY glPolygonMode(GLenum face, GLenum mode); + GLAPI void APIENTRY glScissor(GLint x, GLint y, GLsizei width, GLsizei height); + GLAPI void APIENTRY glTexParameterf(GLenum target, GLenum pname, GLfloat param); + GLAPI void APIENTRY glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param); + GLAPI void APIENTRY glTexParameteriv(GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glTexImage1D( + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + 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 glDrawBuffer(GLenum buf); + GLAPI void APIENTRY glClear(GLbitfield mask); + GLAPI void APIENTRY glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + GLAPI void APIENTRY glClearStencil(GLint s); + GLAPI void APIENTRY glClearDepth(GLdouble depth); + GLAPI void APIENTRY glStencilMask(GLuint mask); + GLAPI void APIENTRY glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); + GLAPI void APIENTRY glDepthMask(GLboolean flag); + GLAPI void APIENTRY glDisable(GLenum cap); + GLAPI void APIENTRY glEnable(GLenum cap); + GLAPI void APIENTRY glFinish(void); + GLAPI void APIENTRY glFlush(void); + GLAPI void APIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor); + GLAPI void APIENTRY glLogicOp(GLenum opcode); + GLAPI void APIENTRY glStencilFunc(GLenum func, GLint ref, GLuint mask); + GLAPI void APIENTRY glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); + GLAPI void APIENTRY glDepthFunc(GLenum func); + GLAPI void APIENTRY glPixelStoref(GLenum pname, GLfloat param); + GLAPI void APIENTRY glPixelStorei(GLenum pname, GLint param); + GLAPI void APIENTRY glReadBuffer(GLenum src); + GLAPI void APIENTRY + glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels); + GLAPI void APIENTRY glGetBooleanv(GLenum pname, GLboolean* data); + GLAPI void APIENTRY glGetDoublev(GLenum pname, GLdouble* data); + GLAPI GLenum APIENTRY glGetError(void); + GLAPI void APIENTRY glGetFloatv(GLenum pname, GLfloat* data); + GLAPI void APIENTRY glGetIntegerv(GLenum pname, GLint* data); + GLAPI const GLubyte* APIENTRY glGetString(GLenum name); + GLAPI void APIENTRY glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void* pixels); + GLAPI void APIENTRY glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetTexParameteriv(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint* params); + GLAPI GLboolean APIENTRY glIsEnabled(GLenum cap); + GLAPI void APIENTRY glDepthRange(GLdouble n, GLdouble f); + GLAPI void APIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height); +#endif +#endif /* GL_VERSION_1_0 */ + +#ifndef GL_VERSION_1_1 +#define GL_VERSION_1_1 1 + typedef khronos_float_t GLclampf; + typedef double GLclampd; +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_DOUBLE 0x140A +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_R3_G3_B2 0x2A10 +#define GL_RGB4 0x804F +#define GL_RGB5 0x8050 +#define GL_RGB8 0x8051 +#define GL_RGB10 0x8052 +#define GL_RGB12 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGBA2 0x8055 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGBA8 0x8058 +#define GL_RGB10_A2 0x8059 +#define GL_RGBA12 0x805A +#define GL_RGBA16 0x805B +#define GL_VERTEX_ARRAY 0x8074 + typedef void(APIENTRYP PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); + typedef void(APIENTRYP PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void* indices); + typedef void(APIENTRYP PFNGLGETPOINTERVPROC)(GLenum pname, void** params); + typedef void(APIENTRYP PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); + typedef void(APIENTRYP PFNGLCOPYTEXIMAGE1DPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLint border + ); + typedef void(APIENTRYP PFNGLCOPYTEXIMAGE2DPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border + ); + typedef void(APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint x, + GLint y, + GLsizei width + ); + typedef void(APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLTEXSUBIMAGE1DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXSUBIMAGE2DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); + 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); + typedef GLboolean(APIENTRYP PFNGLISTEXTUREPROC)(GLuint texture); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawArrays(GLenum mode, GLint first, GLsizei count); + GLAPI void APIENTRY glDrawElements(GLenum mode, GLsizei count, GLenum type, const void* indices); + GLAPI void APIENTRY glGetPointerv(GLenum pname, void** params); + GLAPI void APIENTRY glPolygonOffset(GLfloat factor, GLfloat units); + GLAPI void APIENTRY + glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); + GLAPI void APIENTRY glCopyTexImage2D( + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border + ); + GLAPI void APIENTRY glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + GLAPI void APIENTRY glCopyTexSubImage2D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glTexSubImage1D( + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTexSubImage2D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); + 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); + GLAPI GLboolean APIENTRY glIsTexture(GLuint texture); +#endif +#endif /* GL_VERSION_1_1 */ + +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E + typedef void(APIENTRYP PFNGLDRAWRANGEELEMENTSPROC)( + GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices + ); + typedef void(APIENTRYP PFNGLTEXIMAGE3DPROC)( + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXSUBIMAGE3DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void* indices); + GLAPI void APIENTRY glTexImage3D( + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTexSubImage3D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glCopyTexSubImage3D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); +#endif +#endif /* GL_VERSION_1_2 */ + +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CLAMP_TO_BORDER 0x812D + typedef void(APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture); + typedef void(APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void* img); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glActiveTexture(GLenum texture); + GLAPI void APIENTRY glSampleCoverage(GLfloat value, GLboolean invert); + GLAPI void APIENTRY glCompressedTexImage3D( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTexImage2D( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTexImage1D( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTexSubImage3D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTexSubImage2D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTexSubImage1D( + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glGetCompressedTexImage(GLenum target, GLint level, void* img); +#endif +#endif /* GL_VERSION_1_3 */ + +#ifndef GL_VERSION_1_4 +#define GL_VERSION_1_4 1 +#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_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_BLEND_COLOR 0x8005 +#define GL_BLEND_EQUATION 0x8009 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_FUNC_SUBTRACT 0x800A +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 + typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEPROC)( + GLenum sfactorRGB, + GLenum dfactorRGB, + GLenum sfactorAlpha, + GLenum dfactorAlpha + ); + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSPROC)( + GLenum mode, + const GLint* first, + const GLsizei* count, + GLsizei drawcount + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSPROC)( + GLenum mode, + const GLsizei* count, + GLenum type, + const void* const* indices, + GLsizei drawcount + ); + typedef void(APIENTRYP PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + 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 glMultiDrawArrays(GLenum mode, const GLint* first, const GLsizei* count, GLsizei drawcount); + GLAPI void APIENTRY + glMultiDrawElements(GLenum mode, const GLsizei* count, GLenum type, const void* const* indices, GLsizei drawcount); + GLAPI void APIENTRY glPointParameterf(GLenum pname, GLfloat param); + GLAPI void APIENTRY glPointParameterfv(GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glPointParameteri(GLenum pname, GLint param); + GLAPI void APIENTRY glPointParameteriv(GLenum pname, const GLint* params); + GLAPI void APIENTRY glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + GLAPI void APIENTRY glBlendEquation(GLenum mode); +#endif +#endif /* GL_VERSION_1_4 */ + +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 + typedef khronos_ssize_t GLsizeiptr; + typedef khronos_intptr_t GLintptr; +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#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_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_SAMPLES_PASSED 0x8914 +#define GL_SRC1_ALPHA 0x8589 + typedef void(APIENTRYP PFNGLGENQUERIESPROC)(GLsizei n, GLuint* ids); + typedef void(APIENTRYP PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint* ids); + typedef GLboolean(APIENTRYP PFNGLISQUERYPROC)(GLuint id); + typedef void(APIENTRYP PFNGLBEGINQUERYPROC)(GLenum target, GLuint id); + typedef void(APIENTRYP PFNGLENDQUERYPROC)(GLenum target); + typedef void(APIENTRYP PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint* params); + 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 GLboolean(APIENTRYP PFNGLISBUFFERPROC)(GLuint buffer); + 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); + typedef void(APIENTRYP PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, void* data); + typedef void*(APIENTRYP PFNGLMAPBUFFERPROC)(GLenum target, GLenum access); + typedef GLboolean(APIENTRYP PFNGLUNMAPBUFFERPROC)(GLenum target); + typedef void(APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void** params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGenQueries(GLsizei n, GLuint* ids); + GLAPI void APIENTRY glDeleteQueries(GLsizei n, const GLuint* ids); + GLAPI GLboolean APIENTRY glIsQuery(GLuint id); + GLAPI void APIENTRY glBeginQuery(GLenum target, GLuint id); + GLAPI void APIENTRY glEndQuery(GLenum target); + GLAPI void APIENTRY glGetQueryiv(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetQueryObjectiv(GLuint id, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params); + 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 GLboolean APIENTRY glIsBuffer(GLuint buffer); + 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); + GLAPI void APIENTRY glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void* data); + GLAPI void* APIENTRY glMapBuffer(GLenum target, GLenum access); + GLAPI GLboolean APIENTRY glUnmapBuffer(GLenum target); + GLAPI void APIENTRY glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetBufferPointerv(GLenum target, GLenum pname, void** params); +#endif +#endif /* GL_VERSION_1_5 */ + +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 + 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_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_SHADER_TYPE 0x8B4F +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_DELETE_STATUS 0x8B80 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 + typedef void(APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); + typedef void(APIENTRYP PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum* bufs); + typedef void(APIENTRYP PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + typedef void(APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask); + typedef void(APIENTRYP PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); + typedef void(APIENTRYP PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); + typedef void(APIENTRYP PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar* name); + 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 void(APIENTRYP PFNGLGETACTIVEATTRIBPROC)( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLint* size, + GLenum* type, + GLchar* name + ); + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMPROC)( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLint* size, + GLenum* type, + GLchar* name + ); + typedef void(APIENTRYP + PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei* count, GLuint* shaders); + 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 void(APIENTRYP PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* source); + typedef GLint(APIENTRYP PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar* name); + typedef void(APIENTRYP PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat* params); + typedef void(APIENTRYP PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, GLdouble* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat* params); + 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 GLboolean(APIENTRYP PFNGLISSHADERPROC)(GLuint shader); + 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 PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); + typedef void(APIENTRYP PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); + typedef void(APIENTRYP PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + typedef void(APIENTRYP PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + typedef void(APIENTRYP PFNGLUNIFORM1IPROC)(GLint location, GLint v0); + typedef void(APIENTRYP PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); + typedef void(APIENTRYP PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); + typedef void(APIENTRYP PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + typedef void(APIENTRYP PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLVALIDATEPROGRAMPROC)(GLuint program); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort* v); + 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 glDrawBuffers(GLsizei n, const GLenum* bufs); + GLAPI void APIENTRY glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + GLAPI void APIENTRY glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + GLAPI void APIENTRY glStencilMaskSeparate(GLenum face, GLuint mask); + GLAPI void APIENTRY glAttachShader(GLuint program, GLuint shader); + GLAPI void APIENTRY glBindAttribLocation(GLuint program, GLuint index, const GLchar* name); + 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 void APIENTRY glGetActiveAttrib( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLint* size, + GLenum* type, + GLchar* name + ); + GLAPI void APIENTRY glGetActiveUniform( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLint* size, + GLenum* type, + GLchar* name + ); + GLAPI void APIENTRY glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei* count, GLuint* shaders); + 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 void APIENTRY glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* source); + GLAPI GLint APIENTRY glGetUniformLocation(GLuint program, const GLchar* name); + GLAPI void APIENTRY glGetUniformfv(GLuint program, GLint location, GLfloat* params); + GLAPI void APIENTRY glGetUniformiv(GLuint program, GLint location, GLint* params); + GLAPI void APIENTRY glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble* params); + GLAPI void APIENTRY glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params); + 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 GLboolean APIENTRY glIsShader(GLuint shader); + 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 glUniform1f(GLint location, GLfloat v0); + GLAPI void APIENTRY glUniform2f(GLint location, GLfloat v0, GLfloat v1); + GLAPI void APIENTRY glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + GLAPI void APIENTRY glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + GLAPI void APIENTRY glUniform1i(GLint location, GLint v0); + GLAPI void APIENTRY glUniform2i(GLint location, GLint v0, GLint v1); + GLAPI void APIENTRY glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + GLAPI void APIENTRY glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + GLAPI void APIENTRY glUniform1fv(GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glUniform2fv(GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glUniform3fv(GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glUniform4fv(GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glUniform1iv(GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glUniform2iv(GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glUniform3iv(GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glUniform4iv(GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glValidateProgram(GLuint program); + GLAPI void APIENTRY glVertexAttrib1d(GLuint index, GLdouble x); + GLAPI void APIENTRY glVertexAttrib1dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib1f(GLuint index, GLfloat x); + GLAPI void APIENTRY glVertexAttrib1fv(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib1s(GLuint index, GLshort x); + GLAPI void APIENTRY glVertexAttrib1sv(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); + GLAPI void APIENTRY glVertexAttrib2dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); + GLAPI void APIENTRY glVertexAttrib2fv(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib2s(GLuint index, GLshort x, GLshort y); + GLAPI void APIENTRY glVertexAttrib2sv(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glVertexAttrib3dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glVertexAttrib3fv(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); + GLAPI void APIENTRY glVertexAttrib3sv(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib4Nbv(GLuint index, const GLbyte* v); + GLAPI void APIENTRY glVertexAttrib4Niv(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttrib4Nsv(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + GLAPI void APIENTRY glVertexAttrib4Nubv(GLuint index, const GLubyte* v); + GLAPI void APIENTRY glVertexAttrib4Nuiv(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttrib4Nusv(GLuint index, const GLushort* v); + GLAPI void APIENTRY glVertexAttrib4bv(GLuint index, const GLbyte* v); + GLAPI void APIENTRY glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glVertexAttrib4dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + GLAPI void APIENTRY glVertexAttrib4fv(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib4iv(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + GLAPI void APIENTRY glVertexAttrib4sv(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib4ubv(GLuint index, const GLubyte* v); + GLAPI void APIENTRY glVertexAttrib4uiv(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttrib4usv(GLuint index, const GLushort* v); + 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_2_1 +#define GL_VERSION_2_1 1 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +#endif +#endif /* GL_VERSION_2_1 */ + +#ifndef GL_VERSION_3_0 +#define GL_VERSION_3_0 1 + typedef khronos_uint16_t GLhalf; +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_CLIP_DISTANCE0 0x3000 +#define GL_CLIP_DISTANCE1 0x3001 +#define GL_CLIP_DISTANCE2 0x3002 +#define GL_CLIP_DISTANCE3 0x3003 +#define GL_CLIP_DISTANCE4 0x3004 +#define GL_CLIP_DISTANCE5 0x3005 +#define GL_CLIP_DISTANCE6 0x3006 +#define GL_CLIP_DISTANCE7 0x3007 +#define GL_MAX_CLIP_DISTANCES 0x0D32 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 +#define GL_RGBA32F 0x8814 +#define GL_RGB32F 0x8815 +#define GL_RGBA16F 0x881A +#define GL_RGB16F 0x881B +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_RGB9_E5 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_RGBA32UI 0x8D70 +#define GL_RGB32UI 0x8D71 +#define GL_RGBA16UI 0x8D76 +#define GL_RGB16UI 0x8D77 +#define GL_RGBA8UI 0x8D7C +#define GL_RGB8UI 0x8D7D +#define GL_RGBA32I 0x8D82 +#define GL_RGB32I 0x8D83 +#define GL_RGBA16I 0x8D88 +#define GL_RGB16I 0x8D89 +#define GL_RGBA8I 0x8D8E +#define GL_RGB8I 0x8D8F +#define GL_RED_INTEGER 0x8D94 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_BGR_INTEGER 0x8D9A +#define GL_BGRA_INTEGER 0x8D9B +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_QUERY_WAIT 0x8E13 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_COLOR_ATTACHMENT16 0x8CF0 +#define GL_COLOR_ATTACHMENT17 0x8CF1 +#define GL_COLOR_ATTACHMENT18 0x8CF2 +#define GL_COLOR_ATTACHMENT19 0x8CF3 +#define GL_COLOR_ATTACHMENT20 0x8CF4 +#define GL_COLOR_ATTACHMENT21 0x8CF5 +#define GL_COLOR_ATTACHMENT22 0x8CF6 +#define GL_COLOR_ATTACHMENT23 0x8CF7 +#define GL_COLOR_ATTACHMENT24 0x8CF8 +#define GL_COLOR_ATTACHMENT25 0x8CF9 +#define GL_COLOR_ATTACHMENT26 0x8CFA +#define GL_COLOR_ATTACHMENT27 0x8CFB +#define GL_COLOR_ATTACHMENT28 0x8CFC +#define GL_COLOR_ATTACHMENT29 0x8CFD +#define GL_COLOR_ATTACHMENT30 0x8CFE +#define GL_COLOR_ATTACHMENT31 0x8CFF +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_STENCIL_INDEX1 0x8D46 +#define GL_STENCIL_INDEX4 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_INDEX16 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#define GL_HALF_FLOAT 0x140B +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_COMPRESSED_RED_RGTC1 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC +#define GL_COMPRESSED_RG_RGTC2 0x8DBD +#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE +#define GL_RG 0x8227 +#define GL_RG_INTEGER 0x8228 +#define GL_R8 0x8229 +#define GL_R16 0x822A +#define GL_RG8 0x822B +#define GL_RG16 0x822C +#define GL_R16F 0x822D +#define GL_R32F 0x822E +#define GL_RG16F 0x822F +#define GL_RG32F 0x8230 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_VERTEX_ARRAY_BINDING 0x85B5 + typedef void(APIENTRYP PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + typedef void(APIENTRYP PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean* data); + typedef void(APIENTRYP PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint* data); + typedef void(APIENTRYP PFNGLENABLEIPROC)(GLenum target, GLuint index); + typedef void(APIENTRYP PFNGLDISABLEIPROC)(GLenum target, GLuint index); + typedef GLboolean(APIENTRYP PFNGLISENABLEDIPROC)(GLenum target, GLuint index); + typedef void(APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode); + typedef void(APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC)(void); + typedef void(APIENTRYP PFNGLBINDBUFFERRANGEPROC)( + GLenum target, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer); + typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC)( + GLuint program, + GLsizei count, + const GLchar* const* varyings, + GLenum bufferMode + ); + typedef void(APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLsizei* size, + GLenum* type, + GLchar* name + ); + typedef void(APIENTRYP PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp); + typedef void(APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode); + typedef void(APIENTRYP PFNGLENDCONDITIONALRENDERPROC)(void); + typedef void(APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC)( + GLuint index, + GLint size, + GLenum type, + GLsizei stride, + const void* pointer + ); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint* params); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort* v); + typedef void(APIENTRYP PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint* params); + typedef void(APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, const GLchar* name); + typedef GLint(APIENTRYP PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar* name); + typedef void(APIENTRYP PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0); + typedef void(APIENTRYP PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1); + typedef void(APIENTRYP PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); + typedef void(APIENTRYP PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + typedef void(APIENTRYP PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, const GLuint* params); + typedef void(APIENTRYP PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, GLuint* params); + typedef void(APIENTRYP PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, const GLint* value); + typedef void(APIENTRYP PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, const GLuint* value); + typedef void(APIENTRYP PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, const GLfloat* value); + typedef void(APIENTRYP PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + typedef const GLubyte*(APIENTRYP PFNGLGETSTRINGIPROC)(GLenum name, GLuint index); + typedef GLboolean(APIENTRYP PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); + typedef void(APIENTRYP PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); + typedef void(APIENTRYP PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint* renderbuffers); + typedef void(APIENTRYP PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint* renderbuffers); + typedef void(APIENTRYP + PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + typedef void(APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params); + typedef GLboolean(APIENTRYP PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); + typedef void(APIENTRYP PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); + typedef void(APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint* framebuffers); + typedef void(APIENTRYP PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint* framebuffers); + typedef GLenum(APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC)( + GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level + ); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC)( + GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level + ); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC)( + GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLint zoffset + ); + typedef void(APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC)( + GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer + ); + typedef void(APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)( + GLenum target, + GLenum attachment, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLGENERATEMIPMAPPROC)(GLenum target); + typedef void(APIENTRYP PFNGLBLITFRAMEBUFFERPROC)( + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter + ); + typedef void(APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC)( + GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer + ); + typedef void*(APIENTRYP + PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + typedef void(APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length); + typedef void(APIENTRYP PFNGLBINDVERTEXARRAYPROC)(GLuint array); + typedef void(APIENTRYP PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint* arrays); + typedef void(APIENTRYP PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint* arrays); + typedef GLboolean(APIENTRYP PFNGLISVERTEXARRAYPROC)(GLuint array); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + GLAPI void APIENTRY glGetBooleani_v(GLenum target, GLuint index, GLboolean* data); + GLAPI void APIENTRY glGetIntegeri_v(GLenum target, GLuint index, GLint* data); + GLAPI void APIENTRY glEnablei(GLenum target, GLuint index); + GLAPI void APIENTRY glDisablei(GLenum target, GLuint index); + GLAPI GLboolean APIENTRY glIsEnabledi(GLenum target, GLuint index); + GLAPI void APIENTRY glBeginTransformFeedback(GLenum primitiveMode); + GLAPI void APIENTRY glEndTransformFeedback(void); + GLAPI void APIENTRY glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + GLAPI void APIENTRY glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + GLAPI void APIENTRY + glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode); + GLAPI void APIENTRY glGetTransformFeedbackVarying( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLsizei* size, + GLenum* type, + GLchar* name + ); + GLAPI void APIENTRY glClampColor(GLenum target, GLenum clamp); + GLAPI void APIENTRY glBeginConditionalRender(GLuint id, GLenum mode); + GLAPI void APIENTRY glEndConditionalRender(void); + GLAPI void APIENTRY + glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); + GLAPI void APIENTRY glGetVertexAttribIiv(GLuint index, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params); + GLAPI void APIENTRY glVertexAttribI1i(GLuint index, GLint x); + GLAPI void APIENTRY glVertexAttribI2i(GLuint index, GLint x, GLint y); + GLAPI void APIENTRY glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z); + GLAPI void APIENTRY glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); + GLAPI void APIENTRY glVertexAttribI1ui(GLuint index, GLuint x); + GLAPI void APIENTRY glVertexAttribI2ui(GLuint index, GLuint x, GLuint y); + GLAPI void APIENTRY glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z); + GLAPI void APIENTRY glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + GLAPI void APIENTRY glVertexAttribI1iv(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttribI2iv(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttribI3iv(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttribI4iv(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttribI1uiv(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttribI2uiv(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttribI3uiv(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttribI4uiv(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttribI4bv(GLuint index, const GLbyte* v); + GLAPI void APIENTRY glVertexAttribI4sv(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttribI4ubv(GLuint index, const GLubyte* v); + GLAPI void APIENTRY glVertexAttribI4usv(GLuint index, const GLushort* v); + GLAPI void APIENTRY glGetUniformuiv(GLuint program, GLint location, GLuint* params); + GLAPI void APIENTRY glBindFragDataLocation(GLuint program, GLuint color, const GLchar* name); + GLAPI GLint APIENTRY glGetFragDataLocation(GLuint program, const GLchar* name); + GLAPI void APIENTRY glUniform1ui(GLint location, GLuint v0); + GLAPI void APIENTRY glUniform2ui(GLint location, GLuint v0, GLuint v1); + GLAPI void APIENTRY glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + GLAPI void APIENTRY glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + GLAPI void APIENTRY glUniform1uiv(GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glUniform2uiv(GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glUniform3uiv(GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glUniform4uiv(GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glTexParameterIiv(GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glTexParameterIuiv(GLenum target, GLenum pname, const GLuint* params); + GLAPI void APIENTRY glGetTexParameterIiv(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint* params); + GLAPI void APIENTRY glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint* value); + GLAPI void APIENTRY glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint* value); + GLAPI void APIENTRY glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat* value); + GLAPI void APIENTRY glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + GLAPI const GLubyte* APIENTRY glGetStringi(GLenum name, GLuint index); + GLAPI GLboolean APIENTRY glIsRenderbuffer(GLuint renderbuffer); + GLAPI void APIENTRY glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLAPI void APIENTRY glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers); + GLAPI void APIENTRY glGenRenderbuffers(GLsizei n, GLuint* renderbuffers); + GLAPI void APIENTRY glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI void APIENTRY glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params); + GLAPI GLboolean APIENTRY glIsFramebuffer(GLuint framebuffer); + GLAPI void APIENTRY glBindFramebuffer(GLenum target, GLuint framebuffer); + GLAPI void APIENTRY glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers); + GLAPI void APIENTRY glGenFramebuffers(GLsizei n, GLuint* framebuffers); + GLAPI GLenum APIENTRY glCheckFramebufferStatus(GLenum target); + GLAPI void APIENTRY + glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLAPI void APIENTRY + glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLAPI void APIENTRY glFramebufferTexture3D( + GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLint zoffset + ); + GLAPI void APIENTRY + glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + GLAPI void APIENTRY + glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params); + GLAPI void APIENTRY glGenerateMipmap(GLenum target); + GLAPI void APIENTRY glBlitFramebuffer( + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter + ); + GLAPI void APIENTRY glRenderbufferStorageMultisample( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY + glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + GLAPI void* APIENTRY glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + GLAPI void APIENTRY glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLAPI void APIENTRY glBindVertexArray(GLuint array); + GLAPI void APIENTRY glDeleteVertexArrays(GLsizei n, const GLuint* arrays); + GLAPI void APIENTRY glGenVertexArrays(GLsizei n, GLuint* arrays); + GLAPI GLboolean APIENTRY glIsVertexArray(GLuint array); +#endif +#endif /* GL_VERSION_3_0 */ + +#ifndef GL_VERSION_3_1 +#define GL_VERSION_3_1 1 +#define GL_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#define GL_SAMPLER_BUFFER 0x8DC2 +#define GL_INT_SAMPLER_2D_RECT 0x8DCD +#define GL_INT_SAMPLER_BUFFER 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 +#define GL_TEXTURE_BUFFER 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D +#define GL_TEXTURE_RECTANGLE 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM 0x8F98 +#define GL_RG16_SNORM 0x8F99 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGBA16_SNORM 0x8F9B +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_PRIMITIVE_RESTART 0x8F9D +#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_INVALID_INDEX 0xFFFFFFFFu + typedef void(APIENTRYP + PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC)( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei instancecount + ); + typedef void(APIENTRYP PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer); + typedef void(APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); + typedef void(APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC)( + GLenum readTarget, + GLenum writeTarget, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLGETUNIFORMINDICESPROC)( + GLuint program, + GLsizei uniformCount, + const GLchar* const* uniformNames, + GLuint* uniformIndices + ); + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC)( + GLuint program, + GLsizei uniformCount, + const GLuint* uniformIndices, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC)( + GLuint program, + GLuint uniformIndex, + GLsizei bufSize, + GLsizei* length, + GLchar* uniformName + ); + typedef GLuint(APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, const GLchar* uniformBlockName); + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC)( + GLuint program, + GLuint uniformBlockIndex, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)( + GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, + GLsizei* length, + GLchar* uniformBlockName + ); + typedef void(APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC)( + GLuint program, + GLuint uniformBlockIndex, + GLuint uniformBlockBinding + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + GLAPI void APIENTRY + glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei instancecount); + GLAPI void APIENTRY glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + GLAPI void APIENTRY glPrimitiveRestartIndex(GLuint index); + GLAPI void APIENTRY glCopyBufferSubData( + GLenum readTarget, + GLenum writeTarget, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size + ); + GLAPI void APIENTRY glGetUniformIndices( + GLuint program, + GLsizei uniformCount, + const GLchar* const* uniformNames, + GLuint* uniformIndices + ); + GLAPI void APIENTRY glGetActiveUniformsiv( + GLuint program, + GLsizei uniformCount, + const GLuint* uniformIndices, + GLenum pname, + GLint* params + ); + GLAPI void APIENTRY + glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformName); + GLAPI GLuint APIENTRY glGetUniformBlockIndex(GLuint program, const GLchar* uniformBlockName); + GLAPI void APIENTRY + glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetActiveUniformBlockName( + GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, + GLsizei* length, + GLchar* uniformBlockName + ); + GLAPI void APIENTRY glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +#endif +#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_CORE_PROFILE_BIT 0x00000001 +#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define GL_LINES_ADJACENCY 0x000A +#define GL_LINE_STRIP_ADJACENCY 0x000B +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_CONTEXT_PROFILE_MASK 0x9126 +#define GL_DEPTH_CLAMP 0x864F +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_OBJECT_TYPE 0x9112 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_UNSIGNALED 0x9118 +#define GL_SIGNALED 0x9119 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_CONDITION_SATISFIED 0x911C +#define GL_WAIT_FAILED 0x911D +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_INTEGER_SAMPLES 0x9110 + typedef void(APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC)( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLint basevertex + ); + typedef void(APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)( + GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices, + GLint basevertex + ); + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei instancecount, + GLint basevertex + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)( + GLenum mode, + const GLsizei* count, + GLenum type, + const void* const* indices, + GLsizei drawcount, + const GLint* basevertex + ); + typedef void(APIENTRYP PFNGLPROVOKINGVERTEXPROC)(GLenum mode); + typedef GLsync(APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); + typedef GLboolean(APIENTRYP PFNGLISSYNCPROC)(GLsync sync); + typedef void(APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync); + typedef GLenum(APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); + typedef void(APIENTRYP PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); + typedef void(APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64* data); + typedef void(APIENTRYP + PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, GLsizei* length, GLint* values); + typedef void(APIENTRYP PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64* data); + typedef void(APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, GLint64* params); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); + typedef void(APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC)( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC)( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat* val); + typedef void(APIENTRYP PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void* indices, GLint basevertex); + GLAPI void APIENTRY glDrawRangeElementsBaseVertex( + GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices, + GLint basevertex + ); + GLAPI void APIENTRY glDrawElementsInstancedBaseVertex( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei instancecount, + GLint basevertex + ); + GLAPI void APIENTRY glMultiDrawElementsBaseVertex( + GLenum mode, + const GLsizei* count, + GLenum type, + const void* const* indices, + GLsizei drawcount, + const GLint* basevertex + ); + GLAPI void APIENTRY glProvokingVertex(GLenum mode); + GLAPI GLsync APIENTRY glFenceSync(GLenum condition, GLbitfield flags); + GLAPI GLboolean APIENTRY glIsSync(GLsync sync); + GLAPI void APIENTRY glDeleteSync(GLsync sync); + GLAPI GLenum APIENTRY glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLAPI void APIENTRY glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLAPI void APIENTRY glGetInteger64v(GLenum pname, GLint64* data); + GLAPI void APIENTRY glGetSynciv(GLsync sync, GLenum pname, GLsizei count, GLsizei* length, GLint* values); + GLAPI void APIENTRY glGetInteger64i_v(GLenum target, GLuint index, GLint64* data); + GLAPI void APIENTRY glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params); + GLAPI void APIENTRY glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); + GLAPI void APIENTRY glTexImage2DMultisample( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY glTexImage3DMultisample( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY glGetMultisamplefv(GLenum pname, GLuint index, GLfloat* val); + GLAPI void APIENTRY glSampleMaski(GLuint maskNumber, GLbitfield mask); +#endif +#endif /* GL_VERSION_3_2 */ + +#ifndef GL_VERSION_3_3 +#define GL_VERSION_3_3 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_SRC1_COLOR 0x88F9 +#define GL_ONE_MINUS_SRC1_COLOR 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#define GL_SAMPLER_BINDING 0x8919 +#define GL_RGB10_A2UI 0x906F +#define GL_TEXTURE_SWIZZLE_R 0x8E42 +#define GL_TEXTURE_SWIZZLE_G 0x8E43 +#define GL_TEXTURE_SWIZZLE_B 0x8E44 +#define GL_TEXTURE_SWIZZLE_A 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIMESTAMP 0x8E28 +#define GL_INT_2_10_10_10_REV 0x8D9F + typedef void(APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)( + GLuint program, + GLuint colorNumber, + GLuint index, + const GLchar* name + ); + typedef GLint(APIENTRYP PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar* name); + typedef void(APIENTRYP PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint* samplers); + typedef void(APIENTRYP PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint* samplers); + typedef GLboolean(APIENTRYP PFNGLISSAMPLERPROC)(GLuint sampler); + typedef void(APIENTRYP PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler); + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, const GLint* param); + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, const GLfloat* param); + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, const GLint* param); + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, const GLuint* param); + typedef void(APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, GLuint* params); + typedef void(APIENTRYP PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target); + typedef void(APIENTRYP PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64* params); + typedef void(APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64* params); + typedef void(APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor); + typedef void(APIENTRYP PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + typedef void(APIENTRYP + PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); + typedef void(APIENTRYP PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + typedef void(APIENTRYP + PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); + typedef void(APIENTRYP PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + typedef void(APIENTRYP + PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); + typedef void(APIENTRYP PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + typedef void(APIENTRYP + PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar* name); + GLAPI GLint APIENTRY glGetFragDataIndex(GLuint program, const GLchar* name); + GLAPI void APIENTRY glGenSamplers(GLsizei count, GLuint* samplers); + GLAPI void APIENTRY glDeleteSamplers(GLsizei count, const GLuint* samplers); + GLAPI GLboolean APIENTRY glIsSampler(GLuint sampler); + GLAPI void APIENTRY glBindSampler(GLuint unit, GLuint sampler); + GLAPI void APIENTRY glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); + GLAPI void APIENTRY glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint* param); + GLAPI void APIENTRY glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); + GLAPI void APIENTRY glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat* param); + GLAPI void APIENTRY glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint* param); + GLAPI void APIENTRY glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint* param); + GLAPI void APIENTRY glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint* params); + GLAPI void APIENTRY glQueryCounter(GLuint id, GLenum target); + GLAPI void APIENTRY glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64* params); + GLAPI void APIENTRY glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64* params); + GLAPI void APIENTRY glVertexAttribDivisor(GLuint index, GLuint divisor); + GLAPI void APIENTRY glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + GLAPI void APIENTRY glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); + GLAPI void APIENTRY glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + GLAPI void APIENTRY glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); + GLAPI void APIENTRY glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + GLAPI void APIENTRY glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); + GLAPI void APIENTRY glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + GLAPI void APIENTRY glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); +#endif +#endif /* GL_VERSION_3_3 */ + +#ifndef GL_VERSION_4_0 +#define GL_VERSION_4_0 1 +#define GL_SAMPLE_SHADING 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F +#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 +#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D +#define GL_MAX_VERTEX_STREAMS 0x8E71 +#define GL_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE +#define GL_DOUBLE_MAT2 0x8F46 +#define GL_DOUBLE_MAT3 0x8F47 +#define GL_DOUBLE_MAT4 0x8F48 +#define GL_DOUBLE_MAT2x3 0x8F49 +#define GL_DOUBLE_MAT2x4 0x8F4A +#define GL_DOUBLE_MAT3x2 0x8F4B +#define GL_DOUBLE_MAT3x4 0x8F4C +#define GL_DOUBLE_MAT4x2 0x8F4D +#define GL_DOUBLE_MAT4x3 0x8F4E +#define GL_ACTIVE_SUBROUTINES 0x8DE5 +#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 +#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 +#define GL_MAX_SUBROUTINES 0x8DE7 +#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 +#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A +#define GL_COMPATIBLE_SUBROUTINES 0x8E4B +#define GL_PATCHES 0x000E +#define GL_PATCH_VERTICES 0x8E72 +#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 +#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 +#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 +#define GL_TESS_GEN_MODE 0x8E76 +#define GL_TESS_GEN_SPACING 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 +#define GL_TESS_GEN_POINT_MODE 0x8E79 +#define GL_ISOLINES 0x8E7A +#define GL_FRACTIONAL_ODD 0x8E7B +#define GL_FRACTIONAL_EVEN 0x8E7C +#define GL_MAX_PATCH_VERTICES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 +#define GL_TESS_EVALUATION_SHADER 0x8E87 +#define GL_TESS_CONTROL_SHADER 0x8E88 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 + typedef void(APIENTRYP PFNGLMINSAMPLESHADINGPROC)(GLfloat value); + typedef void(APIENTRYP PFNGLBLENDEQUATIONIPROC)(GLuint buf, GLenum mode); + typedef void(APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + typedef void(APIENTRYP PFNGLBLENDFUNCIPROC)(GLuint buf, GLenum src, GLenum dst); + typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC)( + GLuint buf, + GLenum srcRGB, + GLenum dstRGB, + GLenum srcAlpha, + GLenum dstAlpha + ); + typedef void(APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC)(GLenum mode, const void* indirect); + typedef void(APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void* indirect); + typedef void(APIENTRYP PFNGLUNIFORM1DPROC)(GLint location, GLdouble x); + typedef void(APIENTRYP PFNGLUNIFORM2DPROC)(GLint location, GLdouble x, GLdouble y); + typedef void(APIENTRYP PFNGLUNIFORM3DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLUNIFORM4DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + typedef void(APIENTRYP PFNGLUNIFORM1DVPROC)(GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLUNIFORM2DVPROC)(GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLUNIFORM3DVPROC)(GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLUNIFORM4DVPROC)(GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLGETUNIFORMDVPROC)(GLuint program, GLint location, GLdouble* params); + typedef GLint(APIENTRYP + PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)(GLuint program, GLenum shadertype, const GLchar* name); + typedef GLuint(APIENTRYP PFNGLGETSUBROUTINEINDEXPROC)(GLuint program, GLenum shadertype, const GLchar* name); + typedef void(APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)( + GLuint program, + GLenum shadertype, + GLuint index, + GLenum pname, + GLint* values + ); + typedef void(APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)( + GLuint program, + GLenum shadertype, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLchar* name + ); + typedef void(APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC)( + GLuint program, + GLenum shadertype, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLchar* name + ); + typedef void(APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC)(GLenum shadertype, GLsizei count, const GLuint* indices); + typedef void(APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC)(GLenum shadertype, GLint location, GLuint* params); + typedef void(APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC)(GLuint program, GLenum shadertype, GLenum pname, GLint* values); + typedef void(APIENTRYP PFNGLPATCHPARAMETERIPROC)(GLenum pname, GLint value); + typedef void(APIENTRYP PFNGLPATCHPARAMETERFVPROC)(GLenum pname, const GLfloat* values); + typedef void(APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC)(GLenum target, GLuint id); + typedef void(APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei n, const GLuint* ids); + typedef void(APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint* ids); + typedef GLboolean(APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC)(GLuint id); + typedef void(APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC)(void); + typedef void(APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC)(void); + typedef void(APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC)(GLenum mode, GLuint id); + typedef void(APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)(GLenum mode, GLuint id, GLuint stream); + typedef void(APIENTRYP PFNGLBEGINQUERYINDEXEDPROC)(GLenum target, GLuint index, GLuint id); + typedef void(APIENTRYP PFNGLENDQUERYINDEXEDPROC)(GLenum target, GLuint index); + typedef void(APIENTRYP PFNGLGETQUERYINDEXEDIVPROC)(GLenum target, GLuint index, GLenum pname, GLint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMinSampleShading(GLfloat value); + GLAPI void APIENTRY glBlendEquationi(GLuint buf, GLenum mode); + GLAPI void APIENTRY glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + GLAPI void APIENTRY glBlendFunci(GLuint buf, GLenum src, GLenum dst); + GLAPI void APIENTRY + glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + GLAPI void APIENTRY glDrawArraysIndirect(GLenum mode, const void* indirect); + GLAPI void APIENTRY glDrawElementsIndirect(GLenum mode, GLenum type, const void* indirect); + GLAPI void APIENTRY glUniform1d(GLint location, GLdouble x); + GLAPI void APIENTRY glUniform2d(GLint location, GLdouble x, GLdouble y); + GLAPI void APIENTRY glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glUniform1dv(GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glUniform2dv(GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glUniform3dv(GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glUniform4dv(GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glGetUniformdv(GLuint program, GLint location, GLdouble* params); + GLAPI GLint APIENTRY glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar* name); + GLAPI GLuint APIENTRY glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar* name); + GLAPI void APIENTRY + glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint* values); + GLAPI void APIENTRY glGetActiveSubroutineUniformName( + GLuint program, + GLenum shadertype, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLchar* name + ); + GLAPI void APIENTRY glGetActiveSubroutineName( + GLuint program, + GLenum shadertype, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLchar* name + ); + GLAPI void APIENTRY glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint* indices); + GLAPI void APIENTRY glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint* params); + GLAPI void APIENTRY glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint* values); + GLAPI void APIENTRY glPatchParameteri(GLenum pname, GLint value); + GLAPI void APIENTRY glPatchParameterfv(GLenum pname, const GLfloat* values); + GLAPI void APIENTRY glBindTransformFeedback(GLenum target, GLuint id); + GLAPI void APIENTRY glDeleteTransformFeedbacks(GLsizei n, const GLuint* ids); + GLAPI void APIENTRY glGenTransformFeedbacks(GLsizei n, GLuint* ids); + GLAPI GLboolean APIENTRY glIsTransformFeedback(GLuint id); + GLAPI void APIENTRY glPauseTransformFeedback(void); + GLAPI void APIENTRY glResumeTransformFeedback(void); + GLAPI void APIENTRY glDrawTransformFeedback(GLenum mode, GLuint id); + GLAPI void APIENTRY glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); + GLAPI void APIENTRY glBeginQueryIndexed(GLenum target, GLuint index, GLuint id); + GLAPI void APIENTRY glEndQueryIndexed(GLenum target, GLuint index); + GLAPI void APIENTRY glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint* params); +#endif +#endif /* GL_VERSION_4_0 */ + +#ifndef GL_VERSION_4_1 +#define GL_VERSION_4_1 1 +#define GL_FIXED 0x140C +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_RGB565 0x8D62 +#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 +#define GL_PROGRAM_BINARY_LENGTH 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE +#define GL_PROGRAM_BINARY_FORMATS 0x87FF +#define GL_VERTEX_SHADER_BIT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT 0x00000002 +#define GL_GEOMETRY_SHADER_BIT 0x00000004 +#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 +#define GL_ALL_SHADER_BITS 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE 0x8258 +#define GL_ACTIVE_PROGRAM 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_MAX_VIEWPORTS 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE 0x825D +#define GL_LAYER_PROVOKING_VERTEX 0x825E +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F +#define GL_UNDEFINED_VERTEX 0x8260 + typedef void(APIENTRYP PFNGLRELEASESHADERCOMPILERPROC)(void); + typedef void(APIENTRYP PFNGLSHADERBINARYPROC)( + GLsizei count, + const GLuint* shaders, + GLenum binaryFormat, + const void* binary, + GLsizei length + ); + typedef void(APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC)( + GLenum shadertype, + GLenum precisiontype, + GLint* range, + GLint* precision + ); + typedef void(APIENTRYP PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); + typedef void(APIENTRYP PFNGLCLEARDEPTHFPROC)(GLfloat d); + typedef void(APIENTRYP PFNGLGETPROGRAMBINARYPROC)( + GLuint program, + GLsizei bufSize, + GLsizei* length, + GLenum* binaryFormat, + void* binary + ); + typedef void(APIENTRYP + PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, const void* binary, GLsizei length); + typedef void(APIENTRYP PFNGLPROGRAMPARAMETERIPROC)(GLuint program, GLenum pname, GLint value); + typedef void(APIENTRYP PFNGLUSEPROGRAMSTAGESPROC)(GLuint pipeline, GLbitfield stages, GLuint program); + typedef void(APIENTRYP PFNGLACTIVESHADERPROGRAMPROC)(GLuint pipeline, GLuint program); + typedef GLuint(APIENTRYP PFNGLCREATESHADERPROGRAMVPROC)(GLenum type, GLsizei count, const GLchar* const* strings); + typedef void(APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC)(GLuint pipeline); + typedef void(APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC)(GLsizei n, const GLuint* pipelines); + typedef void(APIENTRYP PFNGLGENPROGRAMPIPELINESPROC)(GLsizei n, GLuint* pipelines); + typedef GLboolean(APIENTRYP PFNGLISPROGRAMPIPELINEPROC)(GLuint pipeline); + typedef void(APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC)(GLuint pipeline, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1IPROC)(GLuint program, GLint location, GLint v0); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM1IVPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1FPROC)(GLuint program, GLint location, GLfloat v0); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM1FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1DPROC)(GLuint program, GLint location, GLdouble v0); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM1DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC)(GLuint program, GLint location, GLuint v0); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM1UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2IPROC)(GLuint program, GLint location, GLint v0, GLint v1); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM2IVPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM2FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM2DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM2UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3IVPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM4IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM4IVPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4FPROC)( + GLuint program, + GLint location, + GLfloat v0, + GLfloat v1, + GLfloat v2, + GLfloat v3 + ); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM4FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4DPROC)( + GLuint program, + GLint location, + GLdouble v0, + GLdouble v1, + GLdouble v2, + GLdouble v3 + ); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM4DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC)( + GLuint program, + GLint location, + GLuint v0, + GLuint v1, + GLuint v2, + GLuint v3 + ); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM4UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC)(GLuint pipeline); + typedef void(APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC)( + GLuint pipeline, + GLsizei bufSize, + GLsizei* length, + GLchar* infoLog + ); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1DPROC)(GLuint index, GLdouble x); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2DPROC)(GLuint index, GLdouble x, GLdouble y); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC)( + GLuint index, + GLint size, + GLenum type, + GLsizei stride, + const void* pointer + ); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC)(GLuint index, GLenum pname, GLdouble* params); + typedef void(APIENTRYP PFNGLVIEWPORTARRAYVPROC)(GLuint first, GLsizei count, const GLfloat* v); + typedef void(APIENTRYP PFNGLVIEWPORTINDEXEDFPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); + typedef void(APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLSCISSORARRAYVPROC)(GLuint first, GLsizei count, const GLint* v); + typedef void(APIENTRYP + PFNGLSCISSORINDEXEDPROC)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); + typedef void(APIENTRYP PFNGLSCISSORINDEXEDVPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLDEPTHRANGEARRAYVPROC)(GLuint first, GLsizei count, const GLdouble* v); + typedef void(APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC)(GLuint index, GLdouble n, GLdouble f); + typedef void(APIENTRYP PFNGLGETFLOATI_VPROC)(GLenum target, GLuint index, GLfloat* data); + typedef void(APIENTRYP PFNGLGETDOUBLEI_VPROC)(GLenum target, GLuint index, GLdouble* data); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glReleaseShaderCompiler(void); + GLAPI void APIENTRY + glShaderBinary(GLsizei count, const GLuint* shaders, GLenum binaryFormat, const void* binary, GLsizei length); + GLAPI void APIENTRY + glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); + GLAPI void APIENTRY glDepthRangef(GLfloat n, GLfloat f); + GLAPI void APIENTRY glClearDepthf(GLfloat d); + GLAPI void APIENTRY + glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void* binary); + GLAPI void APIENTRY glProgramBinary(GLuint program, GLenum binaryFormat, const void* binary, GLsizei length); + GLAPI void APIENTRY glProgramParameteri(GLuint program, GLenum pname, GLint value); + GLAPI void APIENTRY glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program); + GLAPI void APIENTRY glActiveShaderProgram(GLuint pipeline, GLuint program); + GLAPI GLuint APIENTRY glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const* strings); + GLAPI void APIENTRY glBindProgramPipeline(GLuint pipeline); + GLAPI void APIENTRY glDeleteProgramPipelines(GLsizei n, const GLuint* pipelines); + GLAPI void APIENTRY glGenProgramPipelines(GLsizei n, GLuint* pipelines); + GLAPI GLboolean APIENTRY glIsProgramPipeline(GLuint pipeline); + GLAPI void APIENTRY glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint* params); + GLAPI void APIENTRY glProgramUniform1i(GLuint program, GLint location, GLint v0); + GLAPI void APIENTRY glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glProgramUniform1f(GLuint program, GLint location, GLfloat v0); + GLAPI void APIENTRY glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glProgramUniform1d(GLuint program, GLint location, GLdouble v0); + GLAPI void APIENTRY glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniform1ui(GLuint program, GLint location, GLuint v0); + GLAPI void APIENTRY glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1); + GLAPI void APIENTRY glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1); + GLAPI void APIENTRY glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1); + GLAPI void APIENTRY glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); + GLAPI void APIENTRY glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + GLAPI void APIENTRY glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + GLAPI void APIENTRY glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); + GLAPI void APIENTRY glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + GLAPI void APIENTRY glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + GLAPI void APIENTRY glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY + glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + GLAPI void APIENTRY glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY + glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); + GLAPI void APIENTRY glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + GLAPI void APIENTRY glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY + glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY + glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY + glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glProgramUniformMatrix2dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x3fv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x2fv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x4fv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x2fv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x4fv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x3fv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x3dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x2dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x4dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x2dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x4dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x3dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glValidateProgramPipeline(GLuint pipeline); + GLAPI void APIENTRY glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar* infoLog); + GLAPI void APIENTRY glVertexAttribL1d(GLuint index, GLdouble x); + GLAPI void APIENTRY glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y); + GLAPI void APIENTRY glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glVertexAttribL1dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttribL2dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttribL3dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttribL4dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY + glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); + GLAPI void APIENTRY glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble* params); + GLAPI void APIENTRY glViewportArrayv(GLuint first, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); + GLAPI void APIENTRY glViewportIndexedfv(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glScissorArrayv(GLuint first, GLsizei count, const GLint* v); + GLAPI void APIENTRY glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); + GLAPI void APIENTRY glScissorIndexedv(GLuint index, const GLint* v); + GLAPI void APIENTRY glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble* v); + GLAPI void APIENTRY glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f); + GLAPI void APIENTRY glGetFloati_v(GLenum target, GLuint index, GLfloat* data); + GLAPI void APIENTRY glGetDoublei_v(GLenum target, GLuint index, GLdouble* data); +#endif +#endif /* GL_VERSION_4_1 */ + +#ifndef GL_VERSION_4_2 +#define GL_VERSION_4_2 1 +#define GL_COPY_READ_BUFFER_BINDING 0x8F36 +#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 +#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 +#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127 +#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128 +#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129 +#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A +#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B +#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C +#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D +#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E +#define GL_NUM_SAMPLE_COUNTS 0x9380 +#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC +#define GL_ATOMIC_COUNTER_BUFFER 0x92C0 +#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 +#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2 +#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3 +#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB +#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF +#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 +#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 +#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5 +#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 +#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC +#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 +#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA +#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 +#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 +#define GL_UNIFORM_BARRIER_BIT 0x00000004 +#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 +#define GL_COMMAND_BARRIER_BIT 0x00000040 +#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 +#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 +#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 +#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 +#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 +#define GL_ALL_BARRIER_BITS 0xFFFFFFFF +#define GL_MAX_IMAGE_UNITS 0x8F38 +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 +#define GL_IMAGE_BINDING_NAME 0x8F3A +#define GL_IMAGE_BINDING_LEVEL 0x8F3B +#define GL_IMAGE_BINDING_LAYERED 0x8F3C +#define GL_IMAGE_BINDING_LAYER 0x8F3D +#define GL_IMAGE_BINDING_ACCESS 0x8F3E +#define GL_IMAGE_1D 0x904C +#define GL_IMAGE_2D 0x904D +#define GL_IMAGE_3D 0x904E +#define GL_IMAGE_2D_RECT 0x904F +#define GL_IMAGE_CUBE 0x9050 +#define GL_IMAGE_BUFFER 0x9051 +#define GL_IMAGE_1D_ARRAY 0x9052 +#define GL_IMAGE_2D_ARRAY 0x9053 +#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 +#define GL_IMAGE_2D_MULTISAMPLE 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 +#define GL_INT_IMAGE_1D 0x9057 +#define GL_INT_IMAGE_2D 0x9058 +#define GL_INT_IMAGE_3D 0x9059 +#define GL_INT_IMAGE_2D_RECT 0x905A +#define GL_INT_IMAGE_CUBE 0x905B +#define GL_INT_IMAGE_BUFFER 0x905C +#define GL_INT_IMAGE_1D_ARRAY 0x905D +#define GL_INT_IMAGE_2D_ARRAY 0x905E +#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F +#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 +#define GL_UNSIGNED_INT_IMAGE_1D 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D 0x9063 +#define GL_UNSIGNED_INT_IMAGE_3D 0x9064 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 +#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C +#define GL_MAX_IMAGE_SAMPLES 0x906D +#define GL_IMAGE_BINDING_FORMAT 0x906E +#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 +#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD +#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE +#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF +#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F + typedef void(APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)( + GLenum mode, + GLint first, + GLsizei count, + GLsizei instancecount, + GLuint baseinstance + ); + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei instancecount, + GLuint baseinstance + ); + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei instancecount, + GLint basevertex, + GLuint baseinstance + ); + typedef void(APIENTRYP PFNGLGETINTERNALFORMATIVPROC)( + GLenum target, + GLenum internalformat, + GLenum pname, + GLsizei count, + GLint* params + ); + typedef void(APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)( + GLuint program, + GLuint bufferIndex, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLBINDIMAGETEXTUREPROC)( + GLuint unit, + GLuint texture, + GLint level, + GLboolean layered, + GLint layer, + GLenum access, + GLenum format + ); + typedef void(APIENTRYP PFNGLMEMORYBARRIERPROC)(GLbitfield barriers); + typedef void(APIENTRYP PFNGLTEXSTORAGE1DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + typedef void(APIENTRYP PFNGLTEXSTORAGE2DPROC)( + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLTEXSTORAGE3DPROC)( + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth + ); + typedef void(APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)(GLenum mode, GLuint id, GLsizei instancecount); + typedef void(APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)( + GLenum mode, + GLuint id, + GLuint stream, + GLsizei instancecount + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawArraysInstancedBaseInstance( + GLenum mode, + GLint first, + GLsizei count, + GLsizei instancecount, + GLuint baseinstance + ); + GLAPI void APIENTRY glDrawElementsInstancedBaseInstance( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei instancecount, + GLuint baseinstance + ); + GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei instancecount, + GLint basevertex, + GLuint baseinstance + ); + GLAPI void APIENTRY + glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint* params); + GLAPI void APIENTRY + glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint* params); + GLAPI void APIENTRY glBindImageTexture( + GLuint unit, + GLuint texture, + GLint level, + GLboolean layered, + GLint layer, + GLenum access, + GLenum format + ); + GLAPI void APIENTRY glMemoryBarrier(GLbitfield barriers); + GLAPI void APIENTRY glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + GLAPI void APIENTRY + glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI void APIENTRY + glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + GLAPI void APIENTRY glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount); + GLAPI void APIENTRY + glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); +#endif +#endif /* GL_VERSION_4_2 */ + +#ifndef GL_VERSION_4_3 +#define GL_VERSION_4_3 1 + typedef void(APIENTRY* GLDEBUGPROC)( + GLenum source, + GLenum type, + GLuint id, + GLenum severity, + GLsizei length, + const GLchar* message, + const void* userParam + ); +#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 +#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E +#define GL_COMPRESSED_RGB8_ETC2 0x9274 +#define GL_COMPRESSED_SRGB8_ETC2 0x9275 +#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 +#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 +#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 +#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 +#define GL_COMPRESSED_R11_EAC 0x9270 +#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 +#define GL_COMPRESSED_RG11_EAC 0x9272 +#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 +#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A +#define GL_MAX_ELEMENT_INDEX 0x8D6B +#define GL_COMPUTE_SHADER 0x91B9 +#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB +#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC +#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD +#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 +#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 +#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 +#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 +#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 +#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB +#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE +#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF +#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED +#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE +#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF +#define GL_COMPUTE_SHADER_BIT 0x00000020 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_BUFFER 0x82E0 +#define GL_SHADER 0x82E1 +#define GL_PROGRAM 0x82E2 +#define GL_QUERY 0x82E3 +#define GL_PROGRAM_PIPELINE 0x82E4 +#define GL_SAMPLER 0x82E6 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_MAX_UNIFORM_LOCATIONS 0x826E +#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 +#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312 +#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 +#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 +#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 +#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 +#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317 +#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 +#define GL_INTERNALFORMAT_SUPPORTED 0x826F +#define GL_INTERNALFORMAT_PREFERRED 0x8270 +#define GL_INTERNALFORMAT_RED_SIZE 0x8271 +#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272 +#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273 +#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274 +#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275 +#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276 +#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277 +#define GL_INTERNALFORMAT_RED_TYPE 0x8278 +#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279 +#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A +#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B +#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C +#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D +#define GL_MAX_WIDTH 0x827E +#define GL_MAX_HEIGHT 0x827F +#define GL_MAX_DEPTH 0x8280 +#define GL_MAX_LAYERS 0x8281 +#define GL_MAX_COMBINED_DIMENSIONS 0x8282 +#define GL_COLOR_COMPONENTS 0x8283 +#define GL_DEPTH_COMPONENTS 0x8284 +#define GL_STENCIL_COMPONENTS 0x8285 +#define GL_COLOR_RENDERABLE 0x8286 +#define GL_DEPTH_RENDERABLE 0x8287 +#define GL_STENCIL_RENDERABLE 0x8288 +#define GL_FRAMEBUFFER_RENDERABLE 0x8289 +#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A +#define GL_FRAMEBUFFER_BLEND 0x828B +#define GL_READ_PIXELS 0x828C +#define GL_READ_PIXELS_FORMAT 0x828D +#define GL_READ_PIXELS_TYPE 0x828E +#define GL_TEXTURE_IMAGE_FORMAT 0x828F +#define GL_TEXTURE_IMAGE_TYPE 0x8290 +#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 +#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 +#define GL_MIPMAP 0x8293 +#define GL_MANUAL_GENERATE_MIPMAP 0x8294 +#define GL_AUTO_GENERATE_MIPMAP 0x8295 +#define GL_COLOR_ENCODING 0x8296 +#define GL_SRGB_READ 0x8297 +#define GL_SRGB_WRITE 0x8298 +#define GL_FILTER 0x829A +#define GL_VERTEX_TEXTURE 0x829B +#define GL_TESS_CONTROL_TEXTURE 0x829C +#define GL_TESS_EVALUATION_TEXTURE 0x829D +#define GL_GEOMETRY_TEXTURE 0x829E +#define GL_FRAGMENT_TEXTURE 0x829F +#define GL_COMPUTE_TEXTURE 0x82A0 +#define GL_TEXTURE_SHADOW 0x82A1 +#define GL_TEXTURE_GATHER 0x82A2 +#define GL_TEXTURE_GATHER_SHADOW 0x82A3 +#define GL_SHADER_IMAGE_LOAD 0x82A4 +#define GL_SHADER_IMAGE_STORE 0x82A5 +#define GL_SHADER_IMAGE_ATOMIC 0x82A6 +#define GL_IMAGE_TEXEL_SIZE 0x82A7 +#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8 +#define GL_IMAGE_PIXEL_FORMAT 0x82A9 +#define GL_IMAGE_PIXEL_TYPE 0x82AA +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF +#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 +#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 +#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 +#define GL_CLEAR_BUFFER 0x82B4 +#define GL_TEXTURE_VIEW 0x82B5 +#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6 +#define GL_FULL_SUPPORT 0x82B7 +#define GL_CAVEAT_SUPPORT 0x82B8 +#define GL_IMAGE_CLASS_4_X_32 0x82B9 +#define GL_IMAGE_CLASS_2_X_32 0x82BA +#define GL_IMAGE_CLASS_1_X_32 0x82BB +#define GL_IMAGE_CLASS_4_X_16 0x82BC +#define GL_IMAGE_CLASS_2_X_16 0x82BD +#define GL_IMAGE_CLASS_1_X_16 0x82BE +#define GL_IMAGE_CLASS_4_X_8 0x82BF +#define GL_IMAGE_CLASS_2_X_8 0x82C0 +#define GL_IMAGE_CLASS_1_X_8 0x82C1 +#define GL_IMAGE_CLASS_11_11_10 0x82C2 +#define GL_IMAGE_CLASS_10_10_10_2 0x82C3 +#define GL_VIEW_CLASS_128_BITS 0x82C4 +#define GL_VIEW_CLASS_96_BITS 0x82C5 +#define GL_VIEW_CLASS_64_BITS 0x82C6 +#define GL_VIEW_CLASS_48_BITS 0x82C7 +#define GL_VIEW_CLASS_32_BITS 0x82C8 +#define GL_VIEW_CLASS_24_BITS 0x82C9 +#define GL_VIEW_CLASS_16_BITS 0x82CA +#define GL_VIEW_CLASS_8_BITS 0x82CB +#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC +#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD +#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE +#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF +#define GL_VIEW_CLASS_RGTC1_RED 0x82D0 +#define GL_VIEW_CLASS_RGTC2_RG 0x82D1 +#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 +#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 +#define GL_UNIFORM 0x92E1 +#define GL_UNIFORM_BLOCK 0x92E2 +#define GL_PROGRAM_INPUT 0x92E3 +#define GL_PROGRAM_OUTPUT 0x92E4 +#define GL_BUFFER_VARIABLE 0x92E5 +#define GL_SHADER_STORAGE_BLOCK 0x92E6 +#define GL_VERTEX_SUBROUTINE 0x92E8 +#define GL_TESS_CONTROL_SUBROUTINE 0x92E9 +#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA +#define GL_GEOMETRY_SUBROUTINE 0x92EB +#define GL_FRAGMENT_SUBROUTINE 0x92EC +#define GL_COMPUTE_SUBROUTINE 0x92ED +#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE +#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF +#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 +#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 +#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 +#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 +#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 +#define GL_ACTIVE_RESOURCES 0x92F5 +#define GL_MAX_NAME_LENGTH 0x92F6 +#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 +#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 +#define GL_NAME_LENGTH 0x92F9 +#define GL_TYPE 0x92FA +#define GL_ARRAY_SIZE 0x92FB +#define GL_OFFSET 0x92FC +#define GL_BLOCK_INDEX 0x92FD +#define GL_ARRAY_STRIDE 0x92FE +#define GL_MATRIX_STRIDE 0x92FF +#define GL_IS_ROW_MAJOR 0x9300 +#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 +#define GL_BUFFER_BINDING 0x9302 +#define GL_BUFFER_DATA_SIZE 0x9303 +#define GL_NUM_ACTIVE_VARIABLES 0x9304 +#define GL_ACTIVE_VARIABLES 0x9305 +#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 +#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 +#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A +#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B +#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C +#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D +#define GL_LOCATION 0x930E +#define GL_LOCATION_INDEX 0x930F +#define GL_IS_PER_PATCH 0x92E7 +#define GL_SHADER_STORAGE_BUFFER 0x90D2 +#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 +#define GL_SHADER_STORAGE_BUFFER_START 0x90D4 +#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 +#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 +#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA +#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB +#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC +#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD +#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE +#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF +#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000 +#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 +#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA +#define GL_TEXTURE_BUFFER_OFFSET 0x919D +#define GL_TEXTURE_BUFFER_SIZE 0x919E +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F +#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +#define GL_VERTEX_ATTRIB_BINDING 0x82D4 +#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 +#define GL_VERTEX_BINDING_DIVISOR 0x82D6 +#define GL_VERTEX_BINDING_OFFSET 0x82D7 +#define GL_VERTEX_BINDING_STRIDE 0x82D8 +#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 +#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA +#define GL_VERTEX_BINDING_BUFFER 0x8F4F + typedef void(APIENTRYP PFNGLCLEARBUFFERDATAPROC)( + GLenum target, + GLenum internalformat, + GLenum format, + GLenum type, + const void* data + ); + typedef void(APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC)( + GLenum target, + GLenum internalformat, + GLintptr offset, + GLsizeiptr size, + GLenum format, + GLenum type, + const void* data + ); + typedef void(APIENTRYP PFNGLDISPATCHCOMPUTEPROC)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + typedef void(APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC)(GLintptr indirect); + typedef void(APIENTRYP PFNGLCOPYIMAGESUBDATAPROC)( + GLuint srcName, + GLenum srcTarget, + GLint srcLevel, + GLint srcX, + GLint srcY, + GLint srcZ, + GLuint dstName, + GLenum dstTarget, + GLint dstLevel, + GLint dstX, + GLint dstY, + GLint dstZ, + GLsizei srcWidth, + GLsizei srcHeight, + GLsizei srcDepth + ); + typedef void(APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETINTERNALFORMATI64VPROC)( + GLenum target, + GLenum internalformat, + GLenum pname, + GLsizei count, + GLint64* params + ); + typedef void(APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth + ); + typedef void(APIENTRYP PFNGLINVALIDATETEXIMAGEPROC)(GLuint texture, GLint level); + typedef void(APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); + typedef void(APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC)(GLuint buffer); + typedef void(APIENTRYP + PFNGLINVALIDATEFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, const GLenum* attachments); + typedef void(APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC)( + GLenum target, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC)( + GLenum mode, + const void* indirect, + GLsizei drawcount, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC)( + GLenum mode, + GLenum type, + const void* indirect, + GLsizei drawcount, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC)( + GLuint program, + GLenum programInterface, + GLenum pname, + GLint* params + ); + typedef GLuint(APIENTRYP + PFNGLGETPROGRAMRESOURCEINDEXPROC)(GLuint program, GLenum programInterface, const GLchar* name); + typedef void(APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC)( + GLuint program, + GLenum programInterface, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLchar* name + ); + typedef void(APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC)( + GLuint program, + GLenum programInterface, + GLuint index, + GLsizei propCount, + const GLenum* props, + GLsizei count, + GLsizei* length, + GLint* params + ); + typedef GLint(APIENTRYP + PFNGLGETPROGRAMRESOURCELOCATIONPROC)(GLuint program, GLenum programInterface, const GLchar* name); + typedef GLint(APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)( + GLuint program, + GLenum programInterface, + const GLchar* name + ); + typedef void(APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC)( + GLuint program, + GLuint storageBlockIndex, + GLuint storageBlockBinding + ); + typedef void(APIENTRYP PFNGLTEXBUFFERRANGEPROC)( + GLenum target, + GLenum internalformat, + GLuint buffer, + GLintptr offset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC)( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC)( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLTEXTUREVIEWPROC)( + GLuint texture, + GLenum target, + GLuint origtexture, + GLenum internalformat, + GLuint minlevel, + GLuint numlevels, + GLuint minlayer, + GLuint numlayers + ); + typedef void(APIENTRYP + PFNGLBINDVERTEXBUFFERPROC)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + typedef void(APIENTRYP PFNGLVERTEXATTRIBFORMATPROC)( + GLuint attribindex, + GLint size, + GLenum type, + GLboolean normalized, + GLuint relativeoffset + ); + typedef void(APIENTRYP + PFNGLVERTEXATTRIBIFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + typedef void(APIENTRYP + PFNGLVERTEXATTRIBLFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + typedef void(APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC)(GLuint attribindex, GLuint bindingindex); + typedef void(APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC)(GLuint bindingindex, GLuint divisor); + typedef void(APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC)( + GLenum source, + GLenum type, + GLenum severity, + GLsizei count, + const GLuint* ids, + GLboolean enabled + ); + typedef void(APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC)( + GLenum source, + GLenum type, + GLuint id, + GLenum severity, + GLsizei length, + const GLchar* buf + ); + typedef void(APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC)(GLDEBUGPROC callback, const void* userParam); + typedef GLuint(APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC)( + GLuint count, + GLsizei bufSize, + GLenum* sources, + GLenum* types, + GLuint* ids, + GLenum* severities, + GLsizei* lengths, + GLchar* messageLog + ); + typedef void(APIENTRYP PFNGLPUSHDEBUGGROUPPROC)(GLenum source, GLuint id, GLsizei length, const GLchar* message); + typedef void(APIENTRYP PFNGLPOPDEBUGGROUPPROC)(void); + typedef void(APIENTRYP PFNGLOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei length, const GLchar* label); + typedef void(APIENTRYP PFNGLGETOBJECTLABELPROC)( + GLenum identifier, + GLuint name, + GLsizei bufSize, + GLsizei* length, + GLchar* label + ); + typedef void(APIENTRYP PFNGLOBJECTPTRLABELPROC)(const void* ptr, GLsizei length, const GLchar* label); + typedef void(APIENTRYP + PFNGLGETOBJECTPTRLABELPROC)(const void* ptr, GLsizei bufSize, GLsizei* length, GLchar* label); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void* data); + GLAPI void APIENTRY glClearBufferSubData( + GLenum target, + GLenum internalformat, + GLintptr offset, + GLsizeiptr size, + GLenum format, + GLenum type, + const void* data + ); + GLAPI void APIENTRY glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + GLAPI void APIENTRY glDispatchComputeIndirect(GLintptr indirect); + GLAPI void APIENTRY glCopyImageSubData( + GLuint srcName, + GLenum srcTarget, + GLint srcLevel, + GLint srcX, + GLint srcY, + GLint srcZ, + GLuint dstName, + GLenum dstTarget, + GLint dstLevel, + GLint dstX, + GLint dstY, + GLint dstZ, + GLsizei srcWidth, + GLsizei srcHeight, + GLsizei srcDepth + ); + GLAPI void APIENTRY glFramebufferParameteri(GLenum target, GLenum pname, GLint param); + GLAPI void APIENTRY glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY + glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint64* params); + GLAPI void APIENTRY glInvalidateTexSubImage( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth + ); + GLAPI void APIENTRY glInvalidateTexImage(GLuint texture, GLint level); + GLAPI void APIENTRY glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length); + GLAPI void APIENTRY glInvalidateBufferData(GLuint buffer); + GLAPI void APIENTRY glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments); + GLAPI void APIENTRY glInvalidateSubFramebuffer( + GLenum target, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glMultiDrawArraysIndirect(GLenum mode, const void* indirect, GLsizei drawcount, GLsizei stride); + GLAPI void APIENTRY + glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void* indirect, GLsizei drawcount, GLsizei stride); + GLAPI void APIENTRY glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint* params); + GLAPI GLuint APIENTRY glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar* name); + GLAPI void APIENTRY glGetProgramResourceName( + GLuint program, + GLenum programInterface, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLchar* name + ); + GLAPI void APIENTRY glGetProgramResourceiv( + GLuint program, + GLenum programInterface, + GLuint index, + GLsizei propCount, + const GLenum* props, + GLsizei count, + GLsizei* length, + GLint* params + ); + GLAPI GLint APIENTRY glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar* name); + GLAPI GLint APIENTRY glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar* name); + GLAPI void APIENTRY + glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); + GLAPI void APIENTRY + glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + GLAPI void APIENTRY glTexStorage2DMultisample( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY glTexStorage3DMultisample( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY glTextureView( + GLuint texture, + GLenum target, + GLuint origtexture, + GLenum internalformat, + GLuint minlevel, + GLuint numlevels, + GLuint minlayer, + GLuint numlayers + ); + GLAPI void APIENTRY glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + GLAPI void APIENTRY + glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + GLAPI void APIENTRY glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + GLAPI void APIENTRY glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + GLAPI void APIENTRY glVertexAttribBinding(GLuint attribindex, GLuint bindingindex); + GLAPI void APIENTRY glVertexBindingDivisor(GLuint bindingindex, GLuint divisor); + GLAPI void APIENTRY glDebugMessageControl( + GLenum source, + GLenum type, + GLenum severity, + GLsizei count, + const GLuint* ids, + GLboolean enabled + ); + GLAPI void APIENTRY + glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf); + GLAPI void APIENTRY glDebugMessageCallback(GLDEBUGPROC callback, const void* userParam); + GLAPI GLuint APIENTRY glGetDebugMessageLog( + GLuint count, + GLsizei bufSize, + GLenum* sources, + GLenum* types, + GLuint* ids, + GLenum* severities, + GLsizei* lengths, + GLchar* messageLog + ); + GLAPI void APIENTRY glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar* message); + GLAPI void APIENTRY glPopDebugGroup(void); + GLAPI void APIENTRY glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar* label); + GLAPI void APIENTRY + glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar* label); + GLAPI void APIENTRY glObjectPtrLabel(const void* ptr, GLsizei length, const GLchar* label); + GLAPI void APIENTRY glGetObjectPtrLabel(const void* ptr, GLsizei bufSize, GLsizei* length, GLchar* label); +#endif +#endif /* GL_VERSION_4_3 */ + +#ifndef GL_VERSION_4_4 +#define GL_VERSION_4_4 1 +#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_TEXTURE_BUFFER_BINDING 0x8C2A +#define GL_MAP_PERSISTENT_BIT 0x0040 +#define GL_MAP_COHERENT_BIT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT 0x0100 +#define GL_CLIENT_STORAGE_BIT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F +#define GL_BUFFER_STORAGE_FLAGS 0x8220 +#define GL_CLEAR_TEXTURE 0x9365 +#define GL_LOCATION_COMPONENT 0x934A +#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B +#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C +#define GL_QUERY_BUFFER 0x9192 +#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000 +#define GL_QUERY_BUFFER_BINDING 0x9193 +#define GL_QUERY_RESULT_NO_WAIT 0x9194 +#define GL_MIRROR_CLAMP_TO_EDGE 0x8743 + typedef void(APIENTRYP PFNGLBUFFERSTORAGEPROC)(GLenum target, GLsizeiptr size, const void* data, GLbitfield flags); + typedef void(APIENTRYP + PFNGLCLEARTEXIMAGEPROC)(GLuint texture, GLint level, GLenum format, GLenum type, const void* data); + typedef void(APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* data + ); + typedef void(APIENTRYP PFNGLBINDBUFFERSBASEPROC)(GLenum target, GLuint first, GLsizei count, const GLuint* buffers); + typedef void(APIENTRYP PFNGLBINDBUFFERSRANGEPROC)( + GLenum target, + GLuint first, + GLsizei count, + const GLuint* buffers, + const GLintptr* offsets, + const GLsizeiptr* sizes + ); + typedef void(APIENTRYP PFNGLBINDTEXTURESPROC)(GLuint first, GLsizei count, const GLuint* textures); + typedef void(APIENTRYP PFNGLBINDSAMPLERSPROC)(GLuint first, GLsizei count, const GLuint* samplers); + typedef void(APIENTRYP PFNGLBINDIMAGETEXTURESPROC)(GLuint first, GLsizei count, const GLuint* textures); + typedef void(APIENTRYP PFNGLBINDVERTEXBUFFERSPROC)( + GLuint first, + GLsizei count, + const GLuint* buffers, + const GLintptr* offsets, + const GLsizei* strides + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBufferStorage(GLenum target, GLsizeiptr size, const void* data, GLbitfield flags); + GLAPI void APIENTRY glClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void* data); + GLAPI void APIENTRY glClearTexSubImage( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* data + ); + GLAPI void APIENTRY glBindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint* buffers); + GLAPI void APIENTRY glBindBuffersRange( + GLenum target, + GLuint first, + GLsizei count, + const GLuint* buffers, + const GLintptr* offsets, + const GLsizeiptr* sizes + ); + GLAPI void APIENTRY glBindTextures(GLuint first, GLsizei count, const GLuint* textures); + GLAPI void APIENTRY glBindSamplers(GLuint first, GLsizei count, const GLuint* samplers); + GLAPI void APIENTRY glBindImageTextures(GLuint first, GLsizei count, const GLuint* textures); + GLAPI void APIENTRY glBindVertexBuffers( + GLuint first, + GLsizei count, + const GLuint* buffers, + const GLintptr* offsets, + const GLsizei* strides + ); +#endif +#endif /* GL_VERSION_4_4 */ + +#ifndef GL_VERSION_4_5 +#define GL_VERSION_4_5 1 +#define GL_CONTEXT_LOST 0x0507 +#define GL_NEGATIVE_ONE_TO_ONE 0x935E +#define GL_ZERO_TO_ONE 0x935F +#define GL_CLIP_ORIGIN 0x935C +#define GL_CLIP_DEPTH_MODE 0x935D +#define GL_QUERY_WAIT_INVERTED 0x8E17 +#define GL_QUERY_NO_WAIT_INVERTED 0x8E18 +#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19 +#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A +#define GL_MAX_CULL_DISTANCES 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA +#define GL_TEXTURE_TARGET 0x1006 +#define GL_QUERY_TARGET 0x82EA +#define GL_GUILTY_CONTEXT_RESET 0x8253 +#define GL_INNOCENT_CONTEXT_RESET 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET 0x8252 +#define GL_NO_RESET_NOTIFICATION 0x8261 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004 +#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC + typedef void(APIENTRYP PFNGLCLIPCONTROLPROC)(GLenum origin, GLenum depth); + typedef void(APIENTRYP PFNGLCREATETRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint* ids); + typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)(GLuint xfb, GLuint index, GLuint buffer); + typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)( + GLuint xfb, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLGETTRANSFORMFEEDBACKIVPROC)(GLuint xfb, GLenum pname, GLint* param); + 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); + typedef void(APIENTRYP PFNGLCREATEBUFFERSPROC)(GLsizei n, GLuint* buffers); + typedef void(APIENTRYP + PFNGLNAMEDBUFFERSTORAGEPROC)(GLuint buffer, GLsizeiptr size, const void* data, GLbitfield flags); + typedef void(APIENTRYP PFNGLNAMEDBUFFERDATAPROC)(GLuint buffer, GLsizeiptr size, const void* data, GLenum usage); + typedef void(APIENTRYP + PFNGLNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); + typedef void(APIENTRYP PFNGLCOPYNAMEDBUFFERSUBDATAPROC)( + GLuint readBuffer, + GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDBUFFERDATAPROC)( + GLuint buffer, + GLenum internalformat, + GLenum format, + GLenum type, + const void* data + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAPROC)( + GLuint buffer, + GLenum internalformat, + GLintptr offset, + GLsizeiptr size, + GLenum format, + GLenum type, + const void* data + ); + typedef void*(APIENTRYP PFNGLMAPNAMEDBUFFERPROC)(GLuint buffer, GLenum access); + typedef void*(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEPROC)( + GLuint buffer, + GLintptr offset, + GLsizeiptr length, + GLbitfield access + ); + typedef GLboolean(APIENTRYP PFNGLUNMAPNAMEDBUFFERPROC)(GLuint buffer); + typedef void(APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVPROC)(GLuint buffer, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)(GLuint buffer, GLenum pname, GLint64* params); + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVPROC)(GLuint buffer, GLenum pname, void** params); + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, void* data); + typedef void(APIENTRYP PFNGLCREATEFRAMEBUFFERSPROC)(GLsizei n, GLuint* framebuffers); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)( + GLuint framebuffer, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)(GLuint framebuffer, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)( + GLuint framebuffer, + GLenum attachment, + GLuint texture, + GLint level + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)( + GLuint framebuffer, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)(GLuint framebuffer, GLenum buf); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)(GLuint framebuffer, GLsizei n, const GLenum* bufs); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)(GLuint framebuffer, GLenum src); + typedef void(APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)( + GLuint framebuffer, + GLsizei numAttachments, + const GLenum* attachments + ); + typedef void(APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)( + GLuint framebuffer, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)( + GLuint framebuffer, + GLenum buffer, + GLint drawbuffer, + const GLint* value + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)( + GLuint framebuffer, + GLenum buffer, + GLint drawbuffer, + const GLuint* value + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)( + GLuint framebuffer, + GLenum buffer, + GLint drawbuffer, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)( + GLuint framebuffer, + GLenum buffer, + GLint drawbuffer, + GLfloat depth, + GLint stencil + ); + typedef void(APIENTRYP PFNGLBLITNAMEDFRAMEBUFFERPROC)( + GLuint readFramebuffer, + GLuint drawFramebuffer, + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter + ); + typedef GLenum(APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)(GLuint framebuffer, GLenum target); + typedef void(APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)(GLuint framebuffer, GLenum pname, GLint* param); + typedef void(APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)( + GLuint framebuffer, + GLenum attachment, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLCREATERENDERBUFFERSPROC)(GLsizei n, GLuint* renderbuffers); + typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEPROC)( + GLuint renderbuffer, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)( + GLuint renderbuffer, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)(GLuint renderbuffer, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLCREATETEXTURESPROC)(GLenum target, GLsizei n, GLuint* textures); + typedef void(APIENTRYP PFNGLTEXTUREBUFFERPROC)(GLuint texture, GLenum internalformat, GLuint buffer); + typedef void(APIENTRYP PFNGLTEXTUREBUFFERRANGEPROC)( + GLuint texture, + GLenum internalformat, + GLuint buffer, + GLintptr offset, + GLsizeiptr size + ); + typedef void(APIENTRYP + PFNGLTEXTURESTORAGE1DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE2DPROC)( + GLuint texture, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE3DPROC)( + GLuint texture, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)( + GLuint texture, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)( + GLuint texture, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE1DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE2DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE3DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint x, + GLint y, + GLsizei width + ); + typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERFPROC)(GLuint texture, GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, const GLfloat* param); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIPROC)(GLuint texture, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, const GLuint* params); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, const GLint* param); + typedef void(APIENTRYP PFNGLGENERATETEXTUREMIPMAPPROC)(GLuint texture); + typedef void(APIENTRYP PFNGLBINDTEXTUREUNITPROC)(GLuint unit, GLuint texture); + typedef void(APIENTRYP PFNGLGETTEXTUREIMAGEPROC)( + GLuint texture, + GLint level, + GLenum format, + GLenum type, + GLsizei bufSize, + void* pixels + ); + typedef void(APIENTRYP + PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLsizei bufSize, void* pixels); + typedef void(APIENTRYP + PFNGLGETTEXTURELEVELPARAMETERFVPROC)(GLuint texture, GLint level, GLenum pname, GLfloat* params); + typedef void(APIENTRYP + PFNGLGETTEXTURELEVELPARAMETERIVPROC)(GLuint texture, GLint level, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, GLuint* params); + typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLCREATEVERTEXARRAYSPROC)(GLsizei n, GLuint* arrays); + typedef void(APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); + typedef void(APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); + typedef void(APIENTRYP PFNGLVERTEXARRAYELEMENTBUFFERPROC)(GLuint vaobj, GLuint buffer); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERPROC)( + GLuint vaobj, + GLuint bindingindex, + GLuint buffer, + GLintptr offset, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERSPROC)( + GLuint vaobj, + GLuint first, + GLsizei count, + const GLuint* buffers, + const GLintptr* offsets, + const GLsizei* strides + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYATTRIBBINDINGPROC)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); + typedef void(APIENTRYP PFNGLVERTEXARRAYATTRIBFORMATPROC)( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLboolean normalized, + GLuint relativeoffset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYATTRIBIFORMATPROC)( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLuint relativeoffset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYATTRIBLFORMATPROC)( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLuint relativeoffset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYBINDINGDIVISORPROC)(GLuint vaobj, GLuint bindingindex, GLuint divisor); + typedef void(APIENTRYP PFNGLGETVERTEXARRAYIVPROC)(GLuint vaobj, GLenum pname, GLint* param); + typedef void(APIENTRYP PFNGLGETVERTEXARRAYINDEXEDIVPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint* param); + typedef void(APIENTRYP + PFNGLGETVERTEXARRAYINDEXED64IVPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint64* param); + typedef void(APIENTRYP PFNGLCREATESAMPLERSPROC)(GLsizei n, GLuint* samplers); + typedef void(APIENTRYP PFNGLCREATEPROGRAMPIPELINESPROC)(GLsizei n, GLuint* pipelines); + typedef void(APIENTRYP PFNGLCREATEQUERIESPROC)(GLenum target, GLsizei n, GLuint* ids); + typedef void(APIENTRYP PFNGLGETQUERYBUFFEROBJECTI64VPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + typedef void(APIENTRYP PFNGLGETQUERYBUFFEROBJECTIVPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + typedef void(APIENTRYP PFNGLGETQUERYBUFFEROBJECTUI64VPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + typedef void(APIENTRYP PFNGLGETQUERYBUFFEROBJECTUIVPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + typedef void(APIENTRYP PFNGLMEMORYBARRIERBYREGIONPROC)(GLbitfield barriers); + typedef void(APIENTRYP PFNGLGETTEXTURESUBIMAGEPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + GLsizei bufSize, + void* pixels + ); + typedef void(APIENTRYP PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLsizei bufSize, + void* pixels + ); + typedef GLenum(APIENTRYP PFNGLGETGRAPHICSRESETSTATUSPROC)(void); + typedef void(APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint lod, GLsizei bufSize, void* pixels); + typedef void(APIENTRYP PFNGLGETNTEXIMAGEPROC)( + GLenum target, + GLint level, + GLenum format, + GLenum type, + GLsizei bufSize, + void* pixels + ); + typedef void(APIENTRYP PFNGLGETNUNIFORMDVPROC)(GLuint program, GLint location, GLsizei bufSize, GLdouble* params); + typedef void(APIENTRYP PFNGLGETNUNIFORMFVPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat* params); + typedef void(APIENTRYP PFNGLGETNUNIFORMIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLint* params); + typedef void(APIENTRYP PFNGLGETNUNIFORMUIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint* params); + typedef void(APIENTRYP PFNGLREADNPIXELSPROC)( + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + GLsizei bufSize, + void* data + ); + typedef void(APIENTRYP PFNGLTEXTUREBARRIERPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glClipControl(GLenum origin, GLenum depth); + GLAPI void APIENTRY glCreateTransformFeedbacks(GLsizei n, GLuint* ids); + GLAPI void APIENTRY glTransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer); + GLAPI void APIENTRY + glTransformFeedbackBufferRange(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + GLAPI void APIENTRY glGetTransformFeedbackiv(GLuint xfb, GLenum pname, GLint* param); + GLAPI void APIENTRY glGetTransformFeedbacki_v(GLuint xfb, GLenum pname, GLuint index, GLint* param); + GLAPI void APIENTRY glGetTransformFeedbacki64_v(GLuint xfb, GLenum pname, GLuint index, GLint64* param); + GLAPI void APIENTRY glCreateBuffers(GLsizei n, GLuint* buffers); + GLAPI void APIENTRY glNamedBufferStorage(GLuint buffer, GLsizeiptr size, const void* data, GLbitfield flags); + GLAPI void APIENTRY glNamedBufferData(GLuint buffer, GLsizeiptr size, const void* data, GLenum usage); + GLAPI void APIENTRY glNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); + GLAPI void APIENTRY glCopyNamedBufferSubData( + GLuint readBuffer, + GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size + ); + GLAPI void APIENTRY + glClearNamedBufferData(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void* data); + GLAPI void APIENTRY glClearNamedBufferSubData( + GLuint buffer, + GLenum internalformat, + GLintptr offset, + GLsizeiptr size, + GLenum format, + GLenum type, + const void* data + ); + GLAPI void* APIENTRY glMapNamedBuffer(GLuint buffer, GLenum access); + GLAPI void* APIENTRY glMapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); + GLAPI GLboolean APIENTRY glUnmapNamedBuffer(GLuint buffer); + GLAPI void APIENTRY glFlushMappedNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length); + GLAPI void APIENTRY glGetNamedBufferParameteriv(GLuint buffer, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetNamedBufferParameteri64v(GLuint buffer, GLenum pname, GLint64* params); + GLAPI void APIENTRY glGetNamedBufferPointerv(GLuint buffer, GLenum pname, void** params); + GLAPI void APIENTRY glGetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, void* data); + GLAPI void APIENTRY glCreateFramebuffers(GLsizei n, GLuint* framebuffers); + GLAPI void APIENTRY glNamedFramebufferRenderbuffer( + GLuint framebuffer, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer + ); + GLAPI void APIENTRY glNamedFramebufferParameteri(GLuint framebuffer, GLenum pname, GLint param); + GLAPI void APIENTRY glNamedFramebufferTexture(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); + GLAPI void APIENTRY + glNamedFramebufferTextureLayer(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); + GLAPI void APIENTRY glNamedFramebufferDrawBuffer(GLuint framebuffer, GLenum buf); + GLAPI void APIENTRY glNamedFramebufferDrawBuffers(GLuint framebuffer, GLsizei n, const GLenum* bufs); + GLAPI void APIENTRY glNamedFramebufferReadBuffer(GLuint framebuffer, GLenum src); + GLAPI void APIENTRY + glInvalidateNamedFramebufferData(GLuint framebuffer, GLsizei numAttachments, const GLenum* attachments); + GLAPI void APIENTRY glInvalidateNamedFramebufferSubData( + GLuint framebuffer, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY + glClearNamedFramebufferiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint* value); + GLAPI void APIENTRY + glClearNamedFramebufferuiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint* value); + GLAPI void APIENTRY + glClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat* value); + GLAPI void APIENTRY + glClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + GLAPI void APIENTRY glBlitNamedFramebuffer( + GLuint readFramebuffer, + GLuint drawFramebuffer, + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter + ); + GLAPI GLenum APIENTRY glCheckNamedFramebufferStatus(GLuint framebuffer, GLenum target); + GLAPI void APIENTRY glGetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint* param); + GLAPI void APIENTRY + glGetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params); + GLAPI void APIENTRY glCreateRenderbuffers(GLsizei n, GLuint* renderbuffers); + GLAPI void APIENTRY + glNamedRenderbufferStorage(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI void APIENTRY glNamedRenderbufferStorageMultisample( + GLuint renderbuffer, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glGetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint* params); + GLAPI void APIENTRY glCreateTextures(GLenum target, GLsizei n, GLuint* textures); + GLAPI void APIENTRY glTextureBuffer(GLuint texture, GLenum internalformat, GLuint buffer); + GLAPI void APIENTRY + glTextureBufferRange(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + GLAPI void APIENTRY glTextureStorage1D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); + GLAPI void APIENTRY + glTextureStorage2D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI void APIENTRY glTextureStorage3D( + GLuint texture, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth + ); + GLAPI void APIENTRY glTextureStorage2DMultisample( + GLuint texture, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY glTextureStorage3DMultisample( + GLuint texture, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY glTextureSubImage1D( + GLuint texture, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTextureSubImage2D( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTextureSubImage3D( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glCompressedTextureSubImage1D( + GLuint texture, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTextureSubImage2D( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTextureSubImage3D( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY + glCopyTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + GLAPI void APIENTRY glCopyTextureSubImage2D( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glCopyTextureSubImage3D( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glTextureParameterf(GLuint texture, GLenum pname, GLfloat param); + GLAPI void APIENTRY glTextureParameterfv(GLuint texture, GLenum pname, const GLfloat* param); + GLAPI void APIENTRY glTextureParameteri(GLuint texture, GLenum pname, GLint param); + GLAPI void APIENTRY glTextureParameterIiv(GLuint texture, GLenum pname, const GLint* params); + GLAPI void APIENTRY glTextureParameterIuiv(GLuint texture, GLenum pname, const GLuint* params); + GLAPI void APIENTRY glTextureParameteriv(GLuint texture, GLenum pname, const GLint* param); + GLAPI void APIENTRY glGenerateTextureMipmap(GLuint texture); + GLAPI void APIENTRY glBindTextureUnit(GLuint unit, GLuint texture); + GLAPI void APIENTRY + glGetTextureImage(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* pixels); + GLAPI void APIENTRY glGetCompressedTextureImage(GLuint texture, GLint level, GLsizei bufSize, void* pixels); + GLAPI void APIENTRY glGetTextureLevelParameterfv(GLuint texture, GLint level, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetTextureLevelParameteriv(GLuint texture, GLint level, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetTextureParameterfv(GLuint texture, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetTextureParameterIiv(GLuint texture, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetTextureParameterIuiv(GLuint texture, GLenum pname, GLuint* params); + GLAPI void APIENTRY glGetTextureParameteriv(GLuint texture, GLenum pname, GLint* params); + GLAPI void APIENTRY glCreateVertexArrays(GLsizei n, GLuint* arrays); + GLAPI void APIENTRY glDisableVertexArrayAttrib(GLuint vaobj, GLuint index); + GLAPI void APIENTRY glEnableVertexArrayAttrib(GLuint vaobj, GLuint index); + GLAPI void APIENTRY glVertexArrayElementBuffer(GLuint vaobj, GLuint buffer); + GLAPI void APIENTRY + glVertexArrayVertexBuffer(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + GLAPI void APIENTRY glVertexArrayVertexBuffers( + GLuint vaobj, + GLuint first, + GLsizei count, + const GLuint* buffers, + const GLintptr* offsets, + const GLsizei* strides + ); + GLAPI void APIENTRY glVertexArrayAttribBinding(GLuint vaobj, GLuint attribindex, GLuint bindingindex); + GLAPI void APIENTRY glVertexArrayAttribFormat( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLboolean normalized, + GLuint relativeoffset + ); + GLAPI void APIENTRY + glVertexArrayAttribIFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + GLAPI void APIENTRY + glVertexArrayAttribLFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + GLAPI void APIENTRY glVertexArrayBindingDivisor(GLuint vaobj, GLuint bindingindex, GLuint divisor); + GLAPI void APIENTRY glGetVertexArrayiv(GLuint vaobj, GLenum pname, GLint* param); + GLAPI void APIENTRY glGetVertexArrayIndexediv(GLuint vaobj, GLuint index, GLenum pname, GLint* param); + GLAPI void APIENTRY glGetVertexArrayIndexed64iv(GLuint vaobj, GLuint index, GLenum pname, GLint64* param); + GLAPI void APIENTRY glCreateSamplers(GLsizei n, GLuint* samplers); + GLAPI void APIENTRY glCreateProgramPipelines(GLsizei n, GLuint* pipelines); + GLAPI void APIENTRY glCreateQueries(GLenum target, GLsizei n, GLuint* ids); + GLAPI void APIENTRY glGetQueryBufferObjecti64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + GLAPI void APIENTRY glGetQueryBufferObjectiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + GLAPI void APIENTRY glGetQueryBufferObjectui64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + GLAPI void APIENTRY glGetQueryBufferObjectuiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + GLAPI void APIENTRY glMemoryBarrierByRegion(GLbitfield barriers); + GLAPI void APIENTRY glGetTextureSubImage( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + GLsizei bufSize, + void* pixels + ); + GLAPI void APIENTRY glGetCompressedTextureSubImage( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLsizei bufSize, + void* pixels + ); + GLAPI GLenum APIENTRY glGetGraphicsResetStatus(void); + GLAPI void APIENTRY glGetnCompressedTexImage(GLenum target, GLint lod, GLsizei bufSize, void* pixels); + GLAPI void APIENTRY + glGetnTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* pixels); + GLAPI void APIENTRY glGetnUniformdv(GLuint program, GLint location, GLsizei bufSize, GLdouble* params); + GLAPI void APIENTRY glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat* params); + GLAPI void APIENTRY glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint* params); + GLAPI void APIENTRY glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint* params); + GLAPI void APIENTRY glReadnPixels( + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + GLsizei bufSize, + void* data + ); + GLAPI void APIENTRY glTextureBarrier(void); +#endif +#endif /* GL_VERSION_4_5 */ + +#ifndef GL_VERSION_4_6 +#define GL_VERSION_4_6 1 +#define GL_SHADER_BINARY_FORMAT_SPIR_V 0x9551 +#define GL_SPIR_V_BINARY 0x9552 +#define GL_PARAMETER_BUFFER 0x80EE +#define GL_PARAMETER_BUFFER_BINDING 0x80EF +#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x00000008 +#define GL_VERTICES_SUBMITTED 0x82EE +#define GL_PRIMITIVES_SUBMITTED 0x82EF +#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0 +#define GL_TESS_CONTROL_SHADER_PATCHES 0x82F1 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2 +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3 +#define GL_FRAGMENT_SHADER_INVOCATIONS 0x82F4 +#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5 +#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6 +#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7 +#define GL_POLYGON_OFFSET_CLAMP 0x8E1B +#define GL_SPIR_V_EXTENSIONS 0x9553 +#define GL_NUM_SPIR_V_EXTENSIONS 0x9554 +#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF +#define GL_TRANSFORM_FEEDBACK_OVERFLOW 0x82EC +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED + typedef void(APIENTRYP PFNGLSPECIALIZESHADERPROC)( + GLuint shader, + const GLchar* pEntryPoint, + GLuint numSpecializationConstants, + const GLuint* pConstantIndex, + const GLuint* pConstantValue + ); + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)( + GLenum mode, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)( + GLenum mode, + GLenum type, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC)(GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glSpecializeShader( + GLuint shader, + const GLchar* pEntryPoint, + GLuint numSpecializationConstants, + const GLuint* pConstantIndex, + const GLuint* pConstantValue + ); + GLAPI void APIENTRY glMultiDrawArraysIndirectCount( + GLenum mode, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); + GLAPI void APIENTRY glMultiDrawElementsIndirectCount( + GLenum mode, + GLenum type, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); + GLAPI void APIENTRY glPolygonOffsetClamp(GLfloat factor, GLfloat units, GLfloat clamp); +#endif +#endif /* GL_VERSION_4_6 */ + +#ifndef GL_ARB_ES2_compatibility +#define GL_ARB_ES2_compatibility 1 +#endif /* GL_ARB_ES2_compatibility */ + +#ifndef GL_ARB_ES3_1_compatibility +#define GL_ARB_ES3_1_compatibility 1 +#endif /* GL_ARB_ES3_1_compatibility */ + +#ifndef GL_ARB_ES3_2_compatibility +#define GL_ARB_ES3_2_compatibility 1 +#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE +#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381 +#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382 + typedef void(APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXARBPROC)( + GLfloat minX, + GLfloat minY, + GLfloat minZ, + GLfloat minW, + GLfloat maxX, + GLfloat maxY, + GLfloat maxZ, + GLfloat maxW + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPrimitiveBoundingBoxARB( + GLfloat minX, + GLfloat minY, + GLfloat minZ, + GLfloat minW, + GLfloat maxX, + GLfloat maxY, + GLfloat maxZ, + GLfloat maxW + ); +#endif +#endif /* GL_ARB_ES3_2_compatibility */ + +#ifndef GL_ARB_ES3_compatibility +#define GL_ARB_ES3_compatibility 1 +#endif /* GL_ARB_ES3_compatibility */ + +#ifndef GL_ARB_arrays_of_arrays +#define GL_ARB_arrays_of_arrays 1 +#endif /* GL_ARB_arrays_of_arrays */ + +#ifndef GL_ARB_base_instance +#define GL_ARB_base_instance 1 +#endif /* GL_ARB_base_instance */ + +#ifndef GL_ARB_bindless_texture +#define GL_ARB_bindless_texture 1 + typedef khronos_uint64_t GLuint64EXT; +#define GL_UNSIGNED_INT64_ARB 0x140F + typedef GLuint64(APIENTRYP PFNGLGETTEXTUREHANDLEARBPROC)(GLuint texture); + typedef GLuint64(APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEARBPROC)(GLuint texture, GLuint sampler); + typedef void(APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle); + typedef void(APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)(GLuint64 handle); + typedef GLuint64(APIENTRYP PFNGLGETIMAGEHANDLEARBPROC)( + GLuint texture, + GLint level, + GLboolean layered, + GLint layer, + GLenum format + ); + typedef void(APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle, GLenum access); + typedef void(APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)(GLuint64 handle); + typedef void(APIENTRYP PFNGLUNIFORMHANDLEUI64ARBPROC)(GLint location, GLuint64 value); + typedef void(APIENTRYP PFNGLUNIFORMHANDLEUI64VARBPROC)(GLint location, GLsizei count, const GLuint64* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)(GLuint program, GLint location, GLuint64 value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64* values + ); + typedef GLboolean(APIENTRYP PFNGLISTEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle); + typedef GLboolean(APIENTRYP PFNGLISIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1UI64ARBPROC)(GLuint index, GLuint64EXT x); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1UI64VARBPROC)(GLuint index, const GLuint64EXT* v); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBLUI64VARBPROC)(GLuint index, GLenum pname, GLuint64EXT* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLuint64 APIENTRY glGetTextureHandleARB(GLuint texture); + GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleARB(GLuint texture, GLuint sampler); + GLAPI void APIENTRY glMakeTextureHandleResidentARB(GLuint64 handle); + GLAPI void APIENTRY glMakeTextureHandleNonResidentARB(GLuint64 handle); + GLAPI GLuint64 APIENTRY + glGetImageHandleARB(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); + GLAPI void APIENTRY glMakeImageHandleResidentARB(GLuint64 handle, GLenum access); + GLAPI void APIENTRY glMakeImageHandleNonResidentARB(GLuint64 handle); + GLAPI void APIENTRY glUniformHandleui64ARB(GLint location, GLuint64 value); + GLAPI void APIENTRY glUniformHandleui64vARB(GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glProgramUniformHandleui64ARB(GLuint program, GLint location, GLuint64 value); + GLAPI void APIENTRY + glProgramUniformHandleui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64* values); + GLAPI GLboolean APIENTRY glIsTextureHandleResidentARB(GLuint64 handle); + GLAPI GLboolean APIENTRY glIsImageHandleResidentARB(GLuint64 handle); + GLAPI void APIENTRY glVertexAttribL1ui64ARB(GLuint index, GLuint64EXT x); + GLAPI void APIENTRY glVertexAttribL1ui64vARB(GLuint index, const GLuint64EXT* v); + GLAPI void APIENTRY glGetVertexAttribLui64vARB(GLuint index, GLenum pname, GLuint64EXT* params); +#endif +#endif /* GL_ARB_bindless_texture */ + +#ifndef GL_ARB_blend_func_extended +#define GL_ARB_blend_func_extended 1 +#endif /* GL_ARB_blend_func_extended */ + +#ifndef GL_ARB_buffer_storage +#define GL_ARB_buffer_storage 1 +#endif /* GL_ARB_buffer_storage */ + +#ifndef GL_ARB_cl_event +#define GL_ARB_cl_event 1 + struct _cl_context; + struct _cl_event; +#define GL_SYNC_CL_EVENT_ARB 0x8240 +#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 + typedef GLsync(APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC)( + struct _cl_context* context, + struct _cl_event* event, + GLbitfield flags + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLsync APIENTRY + glCreateSyncFromCLeventARB(struct _cl_context* context, struct _cl_event* event, GLbitfield flags); +#endif +#endif /* GL_ARB_cl_event */ + +#ifndef GL_ARB_clear_buffer_object +#define GL_ARB_clear_buffer_object 1 +#endif /* GL_ARB_clear_buffer_object */ + +#ifndef GL_ARB_clear_texture +#define GL_ARB_clear_texture 1 +#endif /* GL_ARB_clear_texture */ + +#ifndef GL_ARB_clip_control +#define GL_ARB_clip_control 1 +#endif /* GL_ARB_clip_control */ + +#ifndef GL_ARB_compressed_texture_pixel_storage +#define GL_ARB_compressed_texture_pixel_storage 1 +#endif /* GL_ARB_compressed_texture_pixel_storage */ + +#ifndef GL_ARB_compute_shader +#define GL_ARB_compute_shader 1 +#endif /* GL_ARB_compute_shader */ + +#ifndef GL_ARB_compute_variable_group_size +#define GL_ARB_compute_variable_group_size 1 +#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344 +#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB +#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345 +#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF + typedef void(APIENTRYP PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)( + GLuint num_groups_x, + GLuint num_groups_y, + GLuint num_groups_z, + GLuint group_size_x, + GLuint group_size_y, + GLuint group_size_z + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDispatchComputeGroupSizeARB( + GLuint num_groups_x, + GLuint num_groups_y, + GLuint num_groups_z, + GLuint group_size_x, + GLuint group_size_y, + GLuint group_size_z + ); +#endif +#endif /* GL_ARB_compute_variable_group_size */ + +#ifndef GL_ARB_conditional_render_inverted +#define GL_ARB_conditional_render_inverted 1 +#endif /* GL_ARB_conditional_render_inverted */ + +#ifndef GL_ARB_conservative_depth +#define GL_ARB_conservative_depth 1 +#endif /* GL_ARB_conservative_depth */ + +#ifndef GL_ARB_copy_buffer +#define GL_ARB_copy_buffer 1 +#endif /* GL_ARB_copy_buffer */ + +#ifndef GL_ARB_copy_image +#define GL_ARB_copy_image 1 +#endif /* GL_ARB_copy_image */ + +#ifndef GL_ARB_cull_distance +#define GL_ARB_cull_distance 1 +#endif /* GL_ARB_cull_distance */ + +#ifndef GL_ARB_debug_output +#define GL_ARB_debug_output 1 + typedef void(APIENTRY* GLDEBUGPROCARB)( + GLenum source, + GLenum type, + GLuint id, + GLenum severity, + GLsizei length, + const GLchar* message, + const void* userParam + ); +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 +#define GL_DEBUG_SOURCE_API_ARB 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A +#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B +#define GL_DEBUG_TYPE_ERROR_ARB 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 +#define GL_DEBUG_TYPE_OTHER_ARB 0x8251 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 +#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 + typedef void(APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC)( + GLenum source, + GLenum type, + GLenum severity, + GLsizei count, + const GLuint* ids, + GLboolean enabled + ); + typedef void(APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC)( + GLenum source, + GLenum type, + GLuint id, + GLenum severity, + GLsizei length, + const GLchar* buf + ); + typedef void(APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC)(GLDEBUGPROCARB callback, const void* userParam); + typedef GLuint(APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC)( + GLuint count, + GLsizei bufSize, + GLenum* sources, + GLenum* types, + GLuint* ids, + GLenum* severities, + GLsizei* lengths, + GLchar* messageLog + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDebugMessageControlARB( + GLenum source, + GLenum type, + GLenum severity, + GLsizei count, + const GLuint* ids, + GLboolean enabled + ); + GLAPI void APIENTRY + glDebugMessageInsertARB(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf); + GLAPI void APIENTRY glDebugMessageCallbackARB(GLDEBUGPROCARB callback, const void* userParam); + GLAPI GLuint APIENTRY glGetDebugMessageLogARB( + GLuint count, + GLsizei bufSize, + GLenum* sources, + GLenum* types, + GLuint* ids, + GLenum* severities, + GLsizei* lengths, + GLchar* messageLog + ); +#endif +#endif /* GL_ARB_debug_output */ + +#ifndef GL_ARB_depth_buffer_float +#define GL_ARB_depth_buffer_float 1 +#endif /* GL_ARB_depth_buffer_float */ + +#ifndef GL_ARB_depth_clamp +#define GL_ARB_depth_clamp 1 +#endif /* GL_ARB_depth_clamp */ + +#ifndef GL_ARB_derivative_control +#define GL_ARB_derivative_control 1 +#endif /* GL_ARB_derivative_control */ + +#ifndef GL_ARB_direct_state_access +#define GL_ARB_direct_state_access 1 +#endif /* GL_ARB_direct_state_access */ + +#ifndef GL_ARB_draw_buffers_blend +#define GL_ARB_draw_buffers_blend 1 + typedef void(APIENTRYP PFNGLBLENDEQUATIONIARBPROC)(GLuint buf, GLenum mode); + typedef void(APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + typedef void(APIENTRYP PFNGLBLENDFUNCIARBPROC)(GLuint buf, GLenum src, GLenum dst); + typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC)( + GLuint buf, + GLenum srcRGB, + GLenum dstRGB, + GLenum srcAlpha, + GLenum dstAlpha + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBlendEquationiARB(GLuint buf, GLenum mode); + GLAPI void APIENTRY glBlendEquationSeparateiARB(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + GLAPI void APIENTRY glBlendFunciARB(GLuint buf, GLenum src, GLenum dst); + GLAPI void APIENTRY + glBlendFuncSeparateiARB(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +#endif +#endif /* GL_ARB_draw_buffers_blend */ + +#ifndef GL_ARB_draw_elements_base_vertex +#define GL_ARB_draw_elements_base_vertex 1 +#endif /* GL_ARB_draw_elements_base_vertex */ + +#ifndef GL_ARB_draw_indirect +#define GL_ARB_draw_indirect 1 +#endif /* GL_ARB_draw_indirect */ + +#ifndef GL_ARB_draw_instanced +#define GL_ARB_draw_instanced 1 + typedef void(APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC)( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawArraysInstancedARB(GLenum mode, GLint first, GLsizei count, GLsizei primcount); + GLAPI void APIENTRY + glDrawElementsInstancedARB(GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); +#endif +#endif /* GL_ARB_draw_instanced */ + +#ifndef GL_ARB_enhanced_layouts +#define GL_ARB_enhanced_layouts 1 +#endif /* GL_ARB_enhanced_layouts */ + +#ifndef GL_ARB_explicit_attrib_location +#define GL_ARB_explicit_attrib_location 1 +#endif /* GL_ARB_explicit_attrib_location */ + +#ifndef GL_ARB_explicit_uniform_location +#define GL_ARB_explicit_uniform_location 1 +#endif /* GL_ARB_explicit_uniform_location */ + +#ifndef GL_ARB_fragment_coord_conventions +#define GL_ARB_fragment_coord_conventions 1 +#endif /* GL_ARB_fragment_coord_conventions */ + +#ifndef GL_ARB_fragment_layer_viewport +#define GL_ARB_fragment_layer_viewport 1 +#endif /* GL_ARB_fragment_layer_viewport */ + +#ifndef GL_ARB_fragment_shader_interlock +#define GL_ARB_fragment_shader_interlock 1 +#endif /* GL_ARB_fragment_shader_interlock */ + +#ifndef GL_ARB_framebuffer_no_attachments +#define GL_ARB_framebuffer_no_attachments 1 +#endif /* GL_ARB_framebuffer_no_attachments */ + +#ifndef GL_ARB_framebuffer_object +#define GL_ARB_framebuffer_object 1 +#endif /* GL_ARB_framebuffer_object */ + +#ifndef GL_ARB_framebuffer_sRGB +#define GL_ARB_framebuffer_sRGB 1 +#endif /* GL_ARB_framebuffer_sRGB */ + +#ifndef GL_ARB_geometry_shader4 +#define GL_ARB_geometry_shader4 1 +#define GL_LINES_ADJACENCY_ARB 0x000A +#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B +#define GL_TRIANGLES_ADJACENCY_ARB 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D +#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 +#define GL_GEOMETRY_SHADER_ARB 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 + typedef void(APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC)(GLuint program, GLenum pname, GLint value); + typedef void(APIENTRYP + PFNGLFRAMEBUFFERTEXTUREARBPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)( + GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer + ); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)( + GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLenum face + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glProgramParameteriARB(GLuint program, GLenum pname, GLint value); + GLAPI void APIENTRY glFramebufferTextureARB(GLenum target, GLenum attachment, GLuint texture, GLint level); + GLAPI void APIENTRY + glFramebufferTextureLayerARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + GLAPI void APIENTRY + glFramebufferTextureFaceARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#endif +#endif /* GL_ARB_geometry_shader4 */ + +#ifndef GL_ARB_get_program_binary +#define GL_ARB_get_program_binary 1 +#endif /* GL_ARB_get_program_binary */ + +#ifndef GL_ARB_get_texture_sub_image +#define GL_ARB_get_texture_sub_image 1 +#endif /* GL_ARB_get_texture_sub_image */ + +#ifndef GL_ARB_gl_spirv +#define GL_ARB_gl_spirv 1 +#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551 +#define GL_SPIR_V_BINARY_ARB 0x9552 + typedef void(APIENTRYP PFNGLSPECIALIZESHADERARBPROC)( + GLuint shader, + const GLchar* pEntryPoint, + GLuint numSpecializationConstants, + const GLuint* pConstantIndex, + const GLuint* pConstantValue + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glSpecializeShaderARB( + GLuint shader, + const GLchar* pEntryPoint, + GLuint numSpecializationConstants, + const GLuint* pConstantIndex, + const GLuint* pConstantValue + ); +#endif +#endif /* GL_ARB_gl_spirv */ + +#ifndef GL_ARB_gpu_shader5 +#define GL_ARB_gpu_shader5 1 +#endif /* GL_ARB_gpu_shader5 */ + +#ifndef GL_ARB_gpu_shader_fp64 +#define GL_ARB_gpu_shader_fp64 1 +#endif /* GL_ARB_gpu_shader_fp64 */ + +#ifndef GL_ARB_gpu_shader_int64 +#define GL_ARB_gpu_shader_int64 1 +#define GL_INT64_ARB 0x140E +#define GL_INT64_VEC2_ARB 0x8FE9 +#define GL_INT64_VEC3_ARB 0x8FEA +#define GL_INT64_VEC4_ARB 0x8FEB +#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7 + typedef void(APIENTRYP PFNGLUNIFORM1I64ARBPROC)(GLint location, GLint64 x); + typedef void(APIENTRYP PFNGLUNIFORM2I64ARBPROC)(GLint location, GLint64 x, GLint64 y); + typedef void(APIENTRYP PFNGLUNIFORM3I64ARBPROC)(GLint location, GLint64 x, GLint64 y, GLint64 z); + typedef void(APIENTRYP PFNGLUNIFORM4I64ARBPROC)(GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); + typedef void(APIENTRYP PFNGLUNIFORM1I64VARBPROC)(GLint location, GLsizei count, const GLint64* value); + typedef void(APIENTRYP PFNGLUNIFORM2I64VARBPROC)(GLint location, GLsizei count, const GLint64* value); + typedef void(APIENTRYP PFNGLUNIFORM3I64VARBPROC)(GLint location, GLsizei count, const GLint64* value); + typedef void(APIENTRYP PFNGLUNIFORM4I64VARBPROC)(GLint location, GLsizei count, const GLint64* value); + typedef void(APIENTRYP PFNGLUNIFORM1UI64ARBPROC)(GLint location, GLuint64 x); + typedef void(APIENTRYP PFNGLUNIFORM2UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y); + typedef void(APIENTRYP PFNGLUNIFORM3UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z); + typedef void(APIENTRYP PFNGLUNIFORM4UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); + typedef void(APIENTRYP PFNGLUNIFORM1UI64VARBPROC)(GLint location, GLsizei count, const GLuint64* value); + typedef void(APIENTRYP PFNGLUNIFORM2UI64VARBPROC)(GLint location, GLsizei count, const GLuint64* value); + typedef void(APIENTRYP PFNGLUNIFORM3UI64VARBPROC)(GLint location, GLsizei count, const GLuint64* value); + typedef void(APIENTRYP PFNGLUNIFORM4UI64VARBPROC)(GLint location, GLsizei count, const GLuint64* value); + typedef void(APIENTRYP PFNGLGETUNIFORMI64VARBPROC)(GLuint program, GLint location, GLint64* params); + typedef void(APIENTRYP PFNGLGETUNIFORMUI64VARBPROC)(GLuint program, GLint location, GLuint64* params); + typedef void(APIENTRYP + PFNGLGETNUNIFORMI64VARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLint64* params); + typedef void(APIENTRYP + PFNGLGETNUNIFORMUI64VARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint64* params); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1I64ARBPROC)(GLuint program, GLint location, GLint64 x); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2I64ARBPROC)(GLuint program, GLint location, GLint64 x, GLint64 y); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3I64ARBPROC)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4I64ARBPROC)( + GLuint program, + GLint location, + GLint64 x, + GLint64 y, + GLint64 z, + GLint64 w + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1I64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2I64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3I64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4I64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UI64ARBPROC)(GLuint program, GLint location, GLuint64 x); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UI64ARBPROC)(GLuint program, GLint location, GLuint64 x, GLuint64 y); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UI64ARBPROC)( + GLuint program, + GLint location, + GLuint64 x, + GLuint64 y, + GLuint64 z + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UI64ARBPROC)( + GLuint program, + GLint location, + GLuint64 x, + GLuint64 y, + GLuint64 z, + GLuint64 w + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UI64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UI64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UI64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UI64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64* value + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glUniform1i64ARB(GLint location, GLint64 x); + GLAPI void APIENTRY glUniform2i64ARB(GLint location, GLint64 x, GLint64 y); + GLAPI void APIENTRY glUniform3i64ARB(GLint location, GLint64 x, GLint64 y, GLint64 z); + GLAPI void APIENTRY glUniform4i64ARB(GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); + GLAPI void APIENTRY glUniform1i64vARB(GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glUniform2i64vARB(GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glUniform3i64vARB(GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glUniform4i64vARB(GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glUniform1ui64ARB(GLint location, GLuint64 x); + GLAPI void APIENTRY glUniform2ui64ARB(GLint location, GLuint64 x, GLuint64 y); + GLAPI void APIENTRY glUniform3ui64ARB(GLint location, GLuint64 x, GLuint64 y, GLuint64 z); + GLAPI void APIENTRY glUniform4ui64ARB(GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); + GLAPI void APIENTRY glUniform1ui64vARB(GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glUniform2ui64vARB(GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glUniform3ui64vARB(GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glUniform4ui64vARB(GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glGetUniformi64vARB(GLuint program, GLint location, GLint64* params); + GLAPI void APIENTRY glGetUniformui64vARB(GLuint program, GLint location, GLuint64* params); + GLAPI void APIENTRY glGetnUniformi64vARB(GLuint program, GLint location, GLsizei bufSize, GLint64* params); + GLAPI void APIENTRY glGetnUniformui64vARB(GLuint program, GLint location, GLsizei bufSize, GLuint64* params); + GLAPI void APIENTRY glProgramUniform1i64ARB(GLuint program, GLint location, GLint64 x); + GLAPI void APIENTRY glProgramUniform2i64ARB(GLuint program, GLint location, GLint64 x, GLint64 y); + GLAPI void APIENTRY glProgramUniform3i64ARB(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); + GLAPI void APIENTRY + glProgramUniform4i64ARB(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); + GLAPI void APIENTRY glProgramUniform1i64vARB(GLuint program, GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glProgramUniform2i64vARB(GLuint program, GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glProgramUniform3i64vARB(GLuint program, GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glProgramUniform4i64vARB(GLuint program, GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glProgramUniform1ui64ARB(GLuint program, GLint location, GLuint64 x); + GLAPI void APIENTRY glProgramUniform2ui64ARB(GLuint program, GLint location, GLuint64 x, GLuint64 y); + GLAPI void APIENTRY glProgramUniform3ui64ARB(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z); + GLAPI void APIENTRY + glProgramUniform4ui64ARB(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); + GLAPI void APIENTRY glProgramUniform1ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glProgramUniform2ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glProgramUniform3ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glProgramUniform4ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64* value); +#endif +#endif /* GL_ARB_gpu_shader_int64 */ + +#ifndef GL_ARB_half_float_vertex +#define GL_ARB_half_float_vertex 1 +#endif /* GL_ARB_half_float_vertex */ + +#ifndef GL_ARB_imaging +#define GL_ARB_imaging 1 +#endif /* GL_ARB_imaging */ + +#ifndef GL_ARB_indirect_parameters +#define GL_ARB_indirect_parameters 1 +#define GL_PARAMETER_BUFFER_ARB 0x80EE +#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)( + GLenum mode, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)( + GLenum mode, + GLenum type, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB( + GLenum mode, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); + GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB( + GLenum mode, + GLenum type, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); +#endif +#endif /* GL_ARB_indirect_parameters */ + +#ifndef GL_ARB_instanced_arrays +#define GL_ARB_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE + typedef void(APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC)(GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glVertexAttribDivisorARB(GLuint index, GLuint divisor); +#endif +#endif /* GL_ARB_instanced_arrays */ + +#ifndef GL_ARB_internalformat_query +#define GL_ARB_internalformat_query 1 +#endif /* GL_ARB_internalformat_query */ + +#ifndef GL_ARB_internalformat_query2 +#define GL_ARB_internalformat_query2 1 +#define GL_SRGB_DECODE_ARB 0x8299 +#define GL_VIEW_CLASS_EAC_R11 0x9383 +#define GL_VIEW_CLASS_EAC_RG11 0x9384 +#define GL_VIEW_CLASS_ETC2_RGB 0x9385 +#define GL_VIEW_CLASS_ETC2_RGBA 0x9386 +#define GL_VIEW_CLASS_ETC2_EAC_RGBA 0x9387 +#define GL_VIEW_CLASS_ASTC_4x4_RGBA 0x9388 +#define GL_VIEW_CLASS_ASTC_5x4_RGBA 0x9389 +#define GL_VIEW_CLASS_ASTC_5x5_RGBA 0x938A +#define GL_VIEW_CLASS_ASTC_6x5_RGBA 0x938B +#define GL_VIEW_CLASS_ASTC_6x6_RGBA 0x938C +#define GL_VIEW_CLASS_ASTC_8x5_RGBA 0x938D +#define GL_VIEW_CLASS_ASTC_8x6_RGBA 0x938E +#define GL_VIEW_CLASS_ASTC_8x8_RGBA 0x938F +#define GL_VIEW_CLASS_ASTC_10x5_RGBA 0x9390 +#define GL_VIEW_CLASS_ASTC_10x6_RGBA 0x9391 +#define GL_VIEW_CLASS_ASTC_10x8_RGBA 0x9392 +#define GL_VIEW_CLASS_ASTC_10x10_RGBA 0x9393 +#define GL_VIEW_CLASS_ASTC_12x10_RGBA 0x9394 +#define GL_VIEW_CLASS_ASTC_12x12_RGBA 0x9395 +#endif /* GL_ARB_internalformat_query2 */ + +#ifndef GL_ARB_invalidate_subdata +#define GL_ARB_invalidate_subdata 1 +#endif /* GL_ARB_invalidate_subdata */ + +#ifndef GL_ARB_map_buffer_alignment +#define GL_ARB_map_buffer_alignment 1 +#endif /* GL_ARB_map_buffer_alignment */ + +#ifndef GL_ARB_map_buffer_range +#define GL_ARB_map_buffer_range 1 +#endif /* GL_ARB_map_buffer_range */ + +#ifndef GL_ARB_multi_bind +#define GL_ARB_multi_bind 1 +#endif /* GL_ARB_multi_bind */ + +#ifndef GL_ARB_multi_draw_indirect +#define GL_ARB_multi_draw_indirect 1 +#endif /* GL_ARB_multi_draw_indirect */ + +#ifndef GL_ARB_occlusion_query2 +#define GL_ARB_occlusion_query2 1 +#endif /* GL_ARB_occlusion_query2 */ + +#ifndef GL_ARB_parallel_shader_compile +#define GL_ARB_parallel_shader_compile 1 +#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0 +#define GL_COMPLETION_STATUS_ARB 0x91B1 + typedef void(APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSARBPROC)(GLuint count); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMaxShaderCompilerThreadsARB(GLuint count); +#endif +#endif /* GL_ARB_parallel_shader_compile */ + +#ifndef GL_ARB_pipeline_statistics_query +#define GL_ARB_pipeline_statistics_query 1 +#define GL_VERTICES_SUBMITTED_ARB 0x82EE +#define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF +#define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0 +#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2 +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3 +#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4 +#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5 +#define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6 +#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7 +#endif /* GL_ARB_pipeline_statistics_query */ + +#ifndef GL_ARB_pixel_buffer_object +#define GL_ARB_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF +#endif /* GL_ARB_pixel_buffer_object */ + +#ifndef GL_ARB_polygon_offset_clamp +#define GL_ARB_polygon_offset_clamp 1 +#endif /* GL_ARB_polygon_offset_clamp */ + +#ifndef GL_ARB_post_depth_coverage +#define GL_ARB_post_depth_coverage 1 +#endif /* GL_ARB_post_depth_coverage */ + +#ifndef GL_ARB_program_interface_query +#define GL_ARB_program_interface_query 1 +#endif /* GL_ARB_program_interface_query */ + +#ifndef GL_ARB_provoking_vertex +#define GL_ARB_provoking_vertex 1 +#endif /* GL_ARB_provoking_vertex */ + +#ifndef GL_ARB_query_buffer_object +#define GL_ARB_query_buffer_object 1 +#endif /* GL_ARB_query_buffer_object */ + +#ifndef GL_ARB_robust_buffer_access_behavior +#define GL_ARB_robust_buffer_access_behavior 1 +#endif /* GL_ARB_robust_buffer_access_behavior */ + +#ifndef GL_ARB_robustness +#define GL_ARB_robustness 1 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 + typedef GLenum(APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC)(void); + typedef void(APIENTRYP PFNGLGETNTEXIMAGEARBPROC)( + GLenum target, + GLint level, + GLenum format, + GLenum type, + GLsizei bufSize, + void* img + ); + typedef void(APIENTRYP PFNGLREADNPIXELSARBPROC)( + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + GLsizei bufSize, + void* data + ); + typedef void(APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint lod, GLsizei bufSize, void* img); + typedef void(APIENTRYP PFNGLGETNUNIFORMFVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat* params); + typedef void(APIENTRYP PFNGLGETNUNIFORMIVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLint* params); + typedef void(APIENTRYP PFNGLGETNUNIFORMUIVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint* params); + typedef void(APIENTRYP + PFNGLGETNUNIFORMDVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLdouble* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB(void); + GLAPI void APIENTRY + glGetnTexImageARB(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* img); + GLAPI void APIENTRY glReadnPixelsARB( + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + GLsizei bufSize, + void* data + ); + GLAPI void APIENTRY glGetnCompressedTexImageARB(GLenum target, GLint lod, GLsizei bufSize, void* img); + GLAPI void APIENTRY glGetnUniformfvARB(GLuint program, GLint location, GLsizei bufSize, GLfloat* params); + GLAPI void APIENTRY glGetnUniformivARB(GLuint program, GLint location, GLsizei bufSize, GLint* params); + GLAPI void APIENTRY glGetnUniformuivARB(GLuint program, GLint location, GLsizei bufSize, GLuint* params); + GLAPI void APIENTRY glGetnUniformdvARB(GLuint program, GLint location, GLsizei bufSize, GLdouble* params); +#endif +#endif /* GL_ARB_robustness */ + +#ifndef GL_ARB_robustness_isolation +#define GL_ARB_robustness_isolation 1 +#endif /* GL_ARB_robustness_isolation */ + +#ifndef GL_ARB_sample_locations +#define GL_ARB_sample_locations 1 +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340 +#define GL_SAMPLE_LOCATION_ARB 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343 + typedef void(APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)( + GLenum target, + GLuint start, + GLsizei count, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)( + GLuint framebuffer, + GLuint start, + GLsizei count, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLEVALUATEDEPTHVALUESARBPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFramebufferSampleLocationsfvARB(GLenum target, GLuint start, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY + glNamedFramebufferSampleLocationsfvARB(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY glEvaluateDepthValuesARB(void); +#endif +#endif /* GL_ARB_sample_locations */ + +#ifndef GL_ARB_sample_shading +#define GL_ARB_sample_shading 1 +#define GL_SAMPLE_SHADING_ARB 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 + typedef void(APIENTRYP PFNGLMINSAMPLESHADINGARBPROC)(GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMinSampleShadingARB(GLfloat value); +#endif +#endif /* GL_ARB_sample_shading */ + +#ifndef GL_ARB_sampler_objects +#define GL_ARB_sampler_objects 1 +#endif /* GL_ARB_sampler_objects */ + +#ifndef GL_ARB_seamless_cube_map +#define GL_ARB_seamless_cube_map 1 +#endif /* GL_ARB_seamless_cube_map */ + +#ifndef GL_ARB_seamless_cubemap_per_texture +#define GL_ARB_seamless_cubemap_per_texture 1 +#endif /* GL_ARB_seamless_cubemap_per_texture */ + +#ifndef GL_ARB_separate_shader_objects +#define GL_ARB_separate_shader_objects 1 +#endif /* GL_ARB_separate_shader_objects */ + +#ifndef GL_ARB_shader_atomic_counter_ops +#define GL_ARB_shader_atomic_counter_ops 1 +#endif /* GL_ARB_shader_atomic_counter_ops */ + +#ifndef GL_ARB_shader_atomic_counters +#define GL_ARB_shader_atomic_counters 1 +#endif /* GL_ARB_shader_atomic_counters */ + +#ifndef GL_ARB_shader_ballot +#define GL_ARB_shader_ballot 1 +#endif /* GL_ARB_shader_ballot */ + +#ifndef GL_ARB_shader_bit_encoding +#define GL_ARB_shader_bit_encoding 1 +#endif /* GL_ARB_shader_bit_encoding */ + +#ifndef GL_ARB_shader_clock +#define GL_ARB_shader_clock 1 +#endif /* GL_ARB_shader_clock */ + +#ifndef GL_ARB_shader_draw_parameters +#define GL_ARB_shader_draw_parameters 1 +#endif /* GL_ARB_shader_draw_parameters */ + +#ifndef GL_ARB_shader_group_vote +#define GL_ARB_shader_group_vote 1 +#endif /* GL_ARB_shader_group_vote */ + +#ifndef GL_ARB_shader_image_load_store +#define GL_ARB_shader_image_load_store 1 +#endif /* GL_ARB_shader_image_load_store */ + +#ifndef GL_ARB_shader_image_size +#define GL_ARB_shader_image_size 1 +#endif /* GL_ARB_shader_image_size */ + +#ifndef GL_ARB_shader_precision +#define GL_ARB_shader_precision 1 +#endif /* GL_ARB_shader_precision */ + +#ifndef GL_ARB_shader_stencil_export +#define GL_ARB_shader_stencil_export 1 +#endif /* GL_ARB_shader_stencil_export */ + +#ifndef GL_ARB_shader_storage_buffer_object +#define GL_ARB_shader_storage_buffer_object 1 +#endif /* GL_ARB_shader_storage_buffer_object */ + +#ifndef GL_ARB_shader_subroutine +#define GL_ARB_shader_subroutine 1 +#endif /* GL_ARB_shader_subroutine */ + +#ifndef GL_ARB_shader_texture_image_samples +#define GL_ARB_shader_texture_image_samples 1 +#endif /* GL_ARB_shader_texture_image_samples */ + +#ifndef GL_ARB_shader_viewport_layer_array +#define GL_ARB_shader_viewport_layer_array 1 +#endif /* GL_ARB_shader_viewport_layer_array */ + +#ifndef GL_ARB_shading_language_420pack +#define GL_ARB_shading_language_420pack 1 +#endif /* GL_ARB_shading_language_420pack */ + +#ifndef GL_ARB_shading_language_include +#define GL_ARB_shading_language_include 1 +#define GL_SHADER_INCLUDE_ARB 0x8DAE +#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 +#define GL_NAMED_STRING_TYPE_ARB 0x8DEA + typedef void(APIENTRYP PFNGLNAMEDSTRINGARBPROC)( + GLenum type, + GLint namelen, + const GLchar* name, + GLint stringlen, + const GLchar* string + ); + typedef void(APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC)(GLint namelen, const GLchar* name); + typedef void(APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC)( + GLuint shader, + GLsizei count, + const GLchar* const* path, + const GLint* length + ); + typedef GLboolean(APIENTRYP PFNGLISNAMEDSTRINGARBPROC)(GLint namelen, const GLchar* name); + typedef void(APIENTRYP PFNGLGETNAMEDSTRINGARBPROC)( + GLint namelen, + const GLchar* name, + GLsizei bufSize, + GLint* stringlen, + GLchar* string + ); + typedef void(APIENTRYP + PFNGLGETNAMEDSTRINGIVARBPROC)(GLint namelen, const GLchar* name, GLenum pname, GLint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glNamedStringARB(GLenum type, GLint namelen, const GLchar* name, GLint stringlen, const GLchar* string); + GLAPI void APIENTRY glDeleteNamedStringARB(GLint namelen, const GLchar* name); + GLAPI void APIENTRY + glCompileShaderIncludeARB(GLuint shader, GLsizei count, const GLchar* const* path, const GLint* length); + GLAPI GLboolean APIENTRY glIsNamedStringARB(GLint namelen, const GLchar* name); + GLAPI void APIENTRY + glGetNamedStringARB(GLint namelen, const GLchar* name, GLsizei bufSize, GLint* stringlen, GLchar* string); + GLAPI void APIENTRY glGetNamedStringivARB(GLint namelen, const GLchar* name, GLenum pname, GLint* params); +#endif +#endif /* GL_ARB_shading_language_include */ + +#ifndef GL_ARB_shading_language_packing +#define GL_ARB_shading_language_packing 1 +#endif /* GL_ARB_shading_language_packing */ + +#ifndef GL_ARB_sparse_buffer +#define GL_ARB_sparse_buffer 1 +#define GL_SPARSE_STORAGE_BIT_ARB 0x0400 +#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8 + typedef void(APIENTRYP PFNGLBUFFERPAGECOMMITMENTARBPROC)( + GLenum target, + GLintptr offset, + GLsizeiptr size, + GLboolean commit + ); + typedef void(APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC)( + GLuint buffer, + GLintptr offset, + GLsizeiptr size, + GLboolean commit + ); + typedef void(APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC)( + GLuint buffer, + GLintptr offset, + GLsizeiptr size, + GLboolean commit + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBufferPageCommitmentARB(GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit); + GLAPI void APIENTRY + glNamedBufferPageCommitmentEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); + GLAPI void APIENTRY + glNamedBufferPageCommitmentARB(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); +#endif +#endif /* GL_ARB_sparse_buffer */ + +#ifndef GL_ARB_sparse_texture +#define GL_ARB_sparse_texture 1 +#define GL_TEXTURE_SPARSE_ARB 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7 +#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA +#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197 +#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9 + typedef void(APIENTRYP PFNGLTEXPAGECOMMITMENTARBPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean commit + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTexPageCommitmentARB( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean commit + ); +#endif +#endif /* GL_ARB_sparse_texture */ + +#ifndef GL_ARB_sparse_texture2 +#define GL_ARB_sparse_texture2 1 +#endif /* GL_ARB_sparse_texture2 */ + +#ifndef GL_ARB_sparse_texture_clamp +#define GL_ARB_sparse_texture_clamp 1 +#endif /* GL_ARB_sparse_texture_clamp */ + +#ifndef GL_ARB_spirv_extensions +#define GL_ARB_spirv_extensions 1 +#endif /* GL_ARB_spirv_extensions */ + +#ifndef GL_ARB_stencil_texturing +#define GL_ARB_stencil_texturing 1 +#endif /* GL_ARB_stencil_texturing */ + +#ifndef GL_ARB_sync +#define GL_ARB_sync 1 +#endif /* GL_ARB_sync */ + +#ifndef GL_ARB_tessellation_shader +#define GL_ARB_tessellation_shader 1 +#endif /* GL_ARB_tessellation_shader */ + +#ifndef GL_ARB_texture_barrier +#define GL_ARB_texture_barrier 1 +#endif /* GL_ARB_texture_barrier */ + +#ifndef GL_ARB_texture_border_clamp +#define GL_ARB_texture_border_clamp 1 +#define GL_CLAMP_TO_BORDER_ARB 0x812D +#endif /* GL_ARB_texture_border_clamp */ + +#ifndef GL_ARB_texture_buffer_object +#define GL_ARB_texture_buffer_object 1 +#define GL_TEXTURE_BUFFER_ARB 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E + typedef void(APIENTRYP PFNGLTEXBUFFERARBPROC)(GLenum target, GLenum internalformat, GLuint buffer); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTexBufferARB(GLenum target, GLenum internalformat, GLuint buffer); +#endif +#endif /* GL_ARB_texture_buffer_object */ + +#ifndef GL_ARB_texture_buffer_object_rgb32 +#define GL_ARB_texture_buffer_object_rgb32 1 +#endif /* GL_ARB_texture_buffer_object_rgb32 */ + +#ifndef GL_ARB_texture_buffer_range +#define GL_ARB_texture_buffer_range 1 +#endif /* GL_ARB_texture_buffer_range */ + +#ifndef GL_ARB_texture_compression_bptc +#define GL_ARB_texture_compression_bptc 1 +#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F +#endif /* GL_ARB_texture_compression_bptc */ + +#ifndef GL_ARB_texture_compression_rgtc +#define GL_ARB_texture_compression_rgtc 1 +#endif /* GL_ARB_texture_compression_rgtc */ + +#ifndef GL_ARB_texture_cube_map_array +#define GL_ARB_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F +#endif /* GL_ARB_texture_cube_map_array */ + +#ifndef GL_ARB_texture_filter_anisotropic +#define GL_ARB_texture_filter_anisotropic 1 +#endif /* GL_ARB_texture_filter_anisotropic */ + +#ifndef GL_ARB_texture_filter_minmax +#define GL_ARB_texture_filter_minmax 1 +#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366 +#define GL_WEIGHTED_AVERAGE_ARB 0x9367 +#endif /* GL_ARB_texture_filter_minmax */ + +#ifndef GL_ARB_texture_gather +#define GL_ARB_texture_gather 1 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F +#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F +#endif /* GL_ARB_texture_gather */ + +#ifndef GL_ARB_texture_mirror_clamp_to_edge +#define GL_ARB_texture_mirror_clamp_to_edge 1 +#endif /* GL_ARB_texture_mirror_clamp_to_edge */ + +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_ARB_texture_mirrored_repeat 1 +#define GL_MIRRORED_REPEAT_ARB 0x8370 +#endif /* GL_ARB_texture_mirrored_repeat */ + +#ifndef GL_ARB_texture_multisample +#define GL_ARB_texture_multisample 1 +#endif /* GL_ARB_texture_multisample */ + +#ifndef GL_ARB_texture_non_power_of_two +#define GL_ARB_texture_non_power_of_two 1 +#endif /* GL_ARB_texture_non_power_of_two */ + +#ifndef GL_ARB_texture_query_levels +#define GL_ARB_texture_query_levels 1 +#endif /* GL_ARB_texture_query_levels */ + +#ifndef GL_ARB_texture_query_lod +#define GL_ARB_texture_query_lod 1 +#endif /* GL_ARB_texture_query_lod */ + +#ifndef GL_ARB_texture_rg +#define GL_ARB_texture_rg 1 +#endif /* GL_ARB_texture_rg */ + +#ifndef GL_ARB_texture_rgb10_a2ui +#define GL_ARB_texture_rgb10_a2ui 1 +#endif /* GL_ARB_texture_rgb10_a2ui */ + +#ifndef GL_ARB_texture_stencil8 +#define GL_ARB_texture_stencil8 1 +#endif /* GL_ARB_texture_stencil8 */ + +#ifndef GL_ARB_texture_storage +#define GL_ARB_texture_storage 1 +#endif /* GL_ARB_texture_storage */ + +#ifndef GL_ARB_texture_storage_multisample +#define GL_ARB_texture_storage_multisample 1 +#endif /* GL_ARB_texture_storage_multisample */ + +#ifndef GL_ARB_texture_swizzle +#define GL_ARB_texture_swizzle 1 +#endif /* GL_ARB_texture_swizzle */ + +#ifndef GL_ARB_texture_view +#define GL_ARB_texture_view 1 +#endif /* GL_ARB_texture_view */ + +#ifndef GL_ARB_timer_query +#define GL_ARB_timer_query 1 +#endif /* GL_ARB_timer_query */ + +#ifndef GL_ARB_transform_feedback2 +#define GL_ARB_transform_feedback2 1 +#endif /* GL_ARB_transform_feedback2 */ + +#ifndef GL_ARB_transform_feedback3 +#define GL_ARB_transform_feedback3 1 +#endif /* GL_ARB_transform_feedback3 */ + +#ifndef GL_ARB_transform_feedback_instanced +#define GL_ARB_transform_feedback_instanced 1 +#endif /* GL_ARB_transform_feedback_instanced */ + +#ifndef GL_ARB_transform_feedback_overflow_query +#define GL_ARB_transform_feedback_overflow_query 1 +#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED +#endif /* GL_ARB_transform_feedback_overflow_query */ + +#ifndef GL_ARB_uniform_buffer_object +#define GL_ARB_uniform_buffer_object 1 +#endif /* GL_ARB_uniform_buffer_object */ + +#ifndef GL_ARB_vertex_array_bgra +#define GL_ARB_vertex_array_bgra 1 +#endif /* GL_ARB_vertex_array_bgra */ + +#ifndef GL_ARB_vertex_array_object +#define GL_ARB_vertex_array_object 1 +#endif /* GL_ARB_vertex_array_object */ + +#ifndef GL_ARB_vertex_attrib_64bit +#define GL_ARB_vertex_attrib_64bit 1 +#endif /* GL_ARB_vertex_attrib_64bit */ + +#ifndef GL_ARB_vertex_attrib_binding +#define GL_ARB_vertex_attrib_binding 1 +#endif /* GL_ARB_vertex_attrib_binding */ + +#ifndef GL_ARB_vertex_type_10f_11f_11f_rev +#define GL_ARB_vertex_type_10f_11f_11f_rev 1 +#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */ + +#ifndef GL_ARB_vertex_type_2_10_10_10_rev +#define GL_ARB_vertex_type_2_10_10_10_rev 1 +#endif /* GL_ARB_vertex_type_2_10_10_10_rev */ + +#ifndef GL_ARB_viewport_array +#define GL_ARB_viewport_array 1 + typedef void(APIENTRYP PFNGLDEPTHRANGEARRAYDVNVPROC)(GLuint first, GLsizei count, const GLdouble* v); + typedef void(APIENTRYP PFNGLDEPTHRANGEINDEXEDDNVPROC)(GLuint index, GLdouble n, GLdouble f); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDepthRangeArraydvNV(GLuint first, GLsizei count, const GLdouble* v); + GLAPI void APIENTRY glDepthRangeIndexeddNV(GLuint index, GLdouble n, GLdouble f); +#endif +#endif /* GL_ARB_viewport_array */ + +#ifndef GL_KHR_blend_equation_advanced +#define GL_KHR_blend_equation_advanced 1 +#define GL_MULTIPLY_KHR 0x9294 +#define GL_SCREEN_KHR 0x9295 +#define GL_OVERLAY_KHR 0x9296 +#define GL_DARKEN_KHR 0x9297 +#define GL_LIGHTEN_KHR 0x9298 +#define GL_COLORDODGE_KHR 0x9299 +#define GL_COLORBURN_KHR 0x929A +#define GL_HARDLIGHT_KHR 0x929B +#define GL_SOFTLIGHT_KHR 0x929C +#define GL_DIFFERENCE_KHR 0x929E +#define GL_EXCLUSION_KHR 0x92A0 +#define GL_HSL_HUE_KHR 0x92AD +#define GL_HSL_SATURATION_KHR 0x92AE +#define GL_HSL_COLOR_KHR 0x92AF +#define GL_HSL_LUMINOSITY_KHR 0x92B0 + typedef void(APIENTRYP PFNGLBLENDBARRIERKHRPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBlendBarrierKHR(void); +#endif +#endif /* GL_KHR_blend_equation_advanced */ + +#ifndef GL_KHR_blend_equation_advanced_coherent +#define GL_KHR_blend_equation_advanced_coherent 1 +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 +#endif /* GL_KHR_blend_equation_advanced_coherent */ + +#ifndef GL_KHR_context_flush_control +#define GL_KHR_context_flush_control 1 +#endif /* GL_KHR_context_flush_control */ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +#endif /* GL_KHR_debug */ + +#ifndef GL_KHR_no_error +#define GL_KHR_no_error 1 +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +#endif /* GL_KHR_no_error */ + +#ifndef GL_KHR_parallel_shader_compile +#define GL_KHR_parallel_shader_compile 1 +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_COMPLETION_STATUS_KHR 0x91B1 + typedef void(APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC)(GLuint count); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMaxShaderCompilerThreadsKHR(GLuint count); +#endif +#endif /* GL_KHR_parallel_shader_compile */ + +#ifndef GL_KHR_robust_buffer_access_behavior +#define GL_KHR_robust_buffer_access_behavior 1 +#endif /* GL_KHR_robust_buffer_access_behavior */ + +#ifndef GL_KHR_robustness +#define GL_KHR_robustness 1 +#define GL_CONTEXT_ROBUST_ACCESS 0x90F3 +#endif /* GL_KHR_robustness */ + +#ifndef GL_KHR_shader_subgroup +#define GL_KHR_shader_subgroup 1 +#define GL_SUBGROUP_SIZE_KHR 0x9532 +#define GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533 +#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534 +#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535 +#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001 +#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002 +#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004 +#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008 +#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010 +#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020 +#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040 +#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080 +#endif /* GL_KHR_shader_subgroup */ + +#ifndef GL_KHR_texture_compression_astc_hdr +#define GL_KHR_texture_compression_astc_hdr 1 +#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 +#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 +#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 +#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 +#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 +#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 +#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 +#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 +#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 +#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 +#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA +#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB +#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC +#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD +#endif /* GL_KHR_texture_compression_astc_hdr */ + +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_KHR_texture_compression_astc_ldr 1 +#endif /* GL_KHR_texture_compression_astc_ldr */ + +#ifndef GL_KHR_texture_compression_astc_sliced_3d +#define GL_KHR_texture_compression_astc_sliced_3d 1 +#endif /* GL_KHR_texture_compression_astc_sliced_3d */ + +#ifndef GL_AMD_framebuffer_multisample_advanced +#define GL_AMD_framebuffer_multisample_advanced 1 +#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2 +#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3 +#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4 +#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5 +#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6 +#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7 + typedef void(APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)( + GLenum target, + GLsizei samples, + GLsizei storageSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)( + GLuint renderbuffer, + GLsizei samples, + GLsizei storageSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glRenderbufferStorageMultisampleAdvancedAMD( + GLenum target, + GLsizei samples, + GLsizei storageSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleAdvancedAMD( + GLuint renderbuffer, + GLsizei samples, + GLsizei storageSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); +#endif +#endif /* GL_AMD_framebuffer_multisample_advanced */ + +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFMON_RESULT_AMD 0x8BC6 + typedef void(APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC)(GLint* numGroups, GLsizei groupsSize, GLuint* groups); + typedef void(APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC)( + GLuint group, + GLint* numCounters, + GLint* maxActiveCounters, + GLsizei counterSize, + GLuint* counters + ); + typedef void(APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)( + GLuint group, + GLsizei bufSize, + GLsizei* length, + GLchar* groupString + ); + typedef void(APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)( + GLuint group, + GLuint counter, + GLsizei bufSize, + GLsizei* length, + GLchar* counterString + ); + typedef void(APIENTRYP + PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)(GLuint group, GLuint counter, GLenum pname, void* data); + typedef void(APIENTRYP PFNGLGENPERFMONITORSAMDPROC)(GLsizei n, GLuint* monitors); + typedef void(APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC)(GLsizei n, GLuint* monitors); + typedef void(APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)( + GLuint monitor, + GLboolean enable, + GLuint group, + GLint numCounters, + GLuint* counterList + ); + typedef void(APIENTRYP PFNGLBEGINPERFMONITORAMDPROC)(GLuint monitor); + typedef void(APIENTRYP PFNGLENDPERFMONITORAMDPROC)(GLuint monitor); + typedef void(APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)( + GLuint monitor, + GLenum pname, + GLsizei dataSize, + GLuint* data, + GLint* bytesWritten + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGetPerfMonitorGroupsAMD(GLint* numGroups, GLsizei groupsSize, GLuint* groups); + GLAPI void APIENTRY glGetPerfMonitorCountersAMD( + GLuint group, + GLint* numCounters, + GLint* maxActiveCounters, + GLsizei counterSize, + GLuint* counters + ); + GLAPI void APIENTRY + glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei* length, GLchar* groupString); + GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD( + GLuint group, + GLuint counter, + GLsizei bufSize, + GLsizei* length, + GLchar* counterString + ); + GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, void* data); + GLAPI void APIENTRY glGenPerfMonitorsAMD(GLsizei n, GLuint* monitors); + GLAPI void APIENTRY glDeletePerfMonitorsAMD(GLsizei n, GLuint* monitors); + GLAPI void APIENTRY glSelectPerfMonitorCountersAMD( + GLuint monitor, + GLboolean enable, + GLuint group, + GLint numCounters, + GLuint* counterList + ); + GLAPI void APIENTRY glBeginPerfMonitorAMD(GLuint monitor); + GLAPI void APIENTRY glEndPerfMonitorAMD(GLuint monitor); + GLAPI void APIENTRY + glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint* bytesWritten); +#endif +#endif /* GL_AMD_performance_monitor */ + +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 +#define GL_RGB_422_APPLE 0x8A1F +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_RGB_RAW_422_APPLE 0x8A51 +#endif /* GL_APPLE_rgb_422 */ + +#ifndef GL_EXT_EGL_image_storage +#define GL_EXT_EGL_image_storage 1 + typedef void* GLeglImageOES; + typedef void(APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC)( + GLenum target, + GLeglImageOES image, + const GLint* attrib_list + ); + typedef void(APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC)( + GLuint texture, + GLeglImageOES image, + const GLint* attrib_list + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glEGLImageTargetTexStorageEXT(GLenum target, GLeglImageOES image, const GLint* attrib_list); + GLAPI void APIENTRY + glEGLImageTargetTextureStorageEXT(GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#endif +#endif /* GL_EXT_EGL_image_storage */ + +#ifndef GL_EXT_EGL_sync +#define GL_EXT_EGL_sync 1 +#endif /* GL_EXT_EGL_sync */ + +#ifndef GL_EXT_debug_label +#define GL_EXT_debug_label 1 +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 + typedef void(APIENTRYP PFNGLLABELOBJECTEXTPROC)(GLenum type, GLuint object, GLsizei length, const GLchar* label); + typedef void(APIENTRYP PFNGLGETOBJECTLABELEXTPROC)( + GLenum type, + GLuint object, + GLsizei bufSize, + GLsizei* length, + GLchar* label + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar* label); + GLAPI void APIENTRY + glGetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei* length, GLchar* label); +#endif +#endif /* GL_EXT_debug_label */ + +#ifndef GL_EXT_debug_marker +#define GL_EXT_debug_marker 1 + typedef void(APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC)(GLsizei length, const GLchar* marker); + typedef void(APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC)(GLsizei length, const GLchar* marker); + typedef void(APIENTRYP PFNGLPOPGROUPMARKEREXTPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glInsertEventMarkerEXT(GLsizei length, const GLchar* marker); + GLAPI void APIENTRY glPushGroupMarkerEXT(GLsizei length, const GLchar* marker); + GLAPI void APIENTRY glPopGroupMarkerEXT(void); +#endif +#endif /* GL_EXT_debug_marker */ + +#ifndef GL_EXT_direct_state_access +#define GL_EXT_direct_state_access 1 +#define GL_PROGRAM_MATRIX_EXT 0x8E2D +#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E +#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F + typedef void(APIENTRYP PFNGLMATRIXLOADFEXTPROC)(GLenum mode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXLOADDEXTPROC)(GLenum mode, const GLdouble* m); + typedef void(APIENTRYP PFNGLMATRIXMULTFEXTPROC)(GLenum mode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXMULTDEXTPROC)(GLenum mode, const GLdouble* m); + typedef void(APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC)(GLenum mode); + typedef void(APIENTRYP PFNGLMATRIXROTATEFEXTPROC)(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLMATRIXROTATEDEXTPROC)(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLMATRIXSCALEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLMATRIXSCALEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC)( + GLenum mode, + GLdouble left, + GLdouble right, + GLdouble bottom, + GLdouble top, + GLdouble zNear, + GLdouble zFar + ); + typedef void(APIENTRYP PFNGLMATRIXORTHOEXTPROC)( + GLenum mode, + GLdouble left, + GLdouble right, + GLdouble bottom, + GLdouble top, + GLdouble zNear, + GLdouble zFar + ); + typedef void(APIENTRYP PFNGLMATRIXPOPEXTPROC)(GLenum mode); + typedef void(APIENTRYP PFNGLMATRIXPUSHEXTPROC)(GLenum mode); + typedef void(APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); + typedef void(APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC)( + GLuint texture, + GLenum target, + GLenum pname, + const GLfloat* params + ); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLint param); + typedef void(APIENTRYP + PFNGLTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLint border + ); + typedef void(APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border + ); + typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint x, + GLint y, + GLsizei width + ); + typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum format, + GLenum type, + void* pixels + ); + typedef void(APIENTRYP + PFNGLGETTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP + PFNGLGETTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum pname, + GLfloat* params + ); + typedef void(APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC)(GLenum texunit, GLenum target, GLuint texture); + typedef void(APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC)( + GLenum texunit, + GLint size, + GLenum type, + GLsizei stride, + const void* pointer + ); + typedef void(APIENTRYP PFNGLMULTITEXENVFEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat param); + typedef void(APIENTRYP + PFNGLMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLMULTITEXENVIEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLMULTITEXGENDEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLdouble param); + typedef void(APIENTRYP + PFNGLMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params); + typedef void(APIENTRYP PFNGLMULTITEXGENFEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLfloat param); + typedef void(APIENTRYP + PFNGLMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLMULTITEXGENIEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLdouble* params); + typedef void(APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint param); + typedef void(APIENTRYP + PFNGLMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC)( + GLenum texunit, + GLenum target, + GLenum pname, + const GLfloat* params + ); + typedef void(APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLint border + ); + typedef void(APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border + ); + typedef void(APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint x, + GLint y, + GLsizei width + ); + typedef void(APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum format, + GLenum type, + void* pixels + ); + typedef void(APIENTRYP + PFNGLGETMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP + PFNGLGETMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum pname, + GLfloat* params + ); + typedef void(APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); + typedef void(APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); + typedef void(APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC)(GLenum target, GLuint index, GLfloat* data); + typedef void(APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC)(GLenum target, GLuint index, GLdouble* data); + typedef void(APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC)(GLenum target, GLuint index, void** data); + typedef void(APIENTRYP PFNGLENABLEINDEXEDEXTPROC)(GLenum target, GLuint index); + typedef void(APIENTRYP PFNGLDISABLEINDEXEDEXTPROC)(GLenum target, GLuint index); + typedef GLboolean(APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC)(GLenum target, GLuint index); + typedef void(APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC)(GLenum target, GLuint index, GLint* data); + typedef void(APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC)(GLenum target, GLuint index, GLboolean* data); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, GLint lod, void* img); + typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, GLint lod, void* img); + typedef void(APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble* m); + typedef void(APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble* m); + typedef void(APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLsizeiptr size, const void* data, GLenum usage); + typedef void(APIENTRYP + PFNGLNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); + typedef void*(APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC)(GLuint buffer, GLenum access); + typedef GLboolean(APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC)(GLuint buffer); + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)(GLuint buffer, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)(GLuint buffer, GLenum pname, void** params); + typedef void(APIENTRYP + PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, void* data); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC)(GLuint program, GLint location, GLfloat v0); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3FEXTPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC)( + GLuint program, + GLint location, + GLfloat v0, + GLfloat v1, + GLfloat v2, + GLfloat v3 + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC)(GLuint program, GLint location, GLint v0); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC)(GLuint program, GLint location, GLint v0, GLint v1); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC)( + GLuint program, + GLint location, + GLint v0, + GLint v1, + GLint v2, + GLint v3 + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLfloat* value + ); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM1IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM2IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM4IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP + PFNGLTEXTUREBUFFEREXTPROC)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); + typedef void(APIENTRYP + PFNGLMULTITEXBUFFEREXTPROC)(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); + typedef void(APIENTRYP + PFNGLTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC)( + GLuint texture, + GLenum target, + GLenum pname, + const GLuint* params + ); + typedef void(APIENTRYP + PFNGLGETTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP + PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLuint* params); + typedef void(APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC)( + GLenum texunit, + GLenum target, + GLenum pname, + const GLint* params + ); + typedef void(APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC)( + GLenum texunit, + GLenum target, + GLenum pname, + const GLuint* params + ); + typedef void(APIENTRYP + PFNGLGETMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP + PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLuint* params); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC)(GLuint program, GLint location, GLuint v0); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC)(GLuint program, GLint location, GLuint v0, GLuint v1); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3UIEXTPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC)( + GLuint program, + GLint location, + GLuint v0, + GLuint v1, + GLuint v2, + GLuint v3 + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint* value + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLsizei count, + const GLfloat* params + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLint x, + GLint y, + GLint z, + GLint w + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + const GLint* params + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLsizei count, + const GLint* params + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLuint x, + GLuint y, + GLuint z, + GLuint w + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + const GLuint* params + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLsizei count, + const GLuint* params + ); + typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLint* params + ); + typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLuint* params + ); + typedef void(APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index); + typedef void(APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index); + 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 PFNGLNAMEDPROGRAMSTRINGEXTPROC)( + GLuint program, + GLenum target, + GLenum format, + GLsizei len, + const void* string + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLdouble x, + GLdouble y, + GLdouble z, + GLdouble w + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + const GLdouble* params + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + const GLfloat* params + ); + typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLdouble* params + ); + typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLfloat* params + ); + typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC)(GLuint program, GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP + PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, GLenum pname, void* string); + typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)( + GLuint renderbuffer, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP + PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)(GLuint renderbuffer, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)( + GLuint renderbuffer, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)( + GLuint renderbuffer, + GLsizei coverageSamples, + GLsizei colorSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef GLenum(APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)(GLuint framebuffer, GLenum target); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLint zoffset + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer + ); + typedef void(APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC)(GLuint texture, GLenum target); + typedef void(APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC)(GLenum texunit, GLenum target); + typedef void(APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); + typedef void(APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)(GLuint framebuffer, GLsizei n, const GLenum* bufs); + typedef void(APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); + typedef void(APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)( + GLuint readBuffer, + GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLuint texture, + GLint level + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLuint texture, + GLint level, + GLenum face + ); + typedef void(APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC)(GLuint texture, GLenum target, GLuint renderbuffer); + typedef void(APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC)(GLenum texunit, GLenum target, GLuint renderbuffer); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLenum texunit, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLuint index, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLuint index, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array); + typedef void(APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array); + typedef void(APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index); + typedef void(APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index); + typedef void(APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC)(GLuint vaobj, GLenum pname, GLint* param); + typedef void(APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC)(GLuint vaobj, GLenum pname, void** param); + 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); + typedef void*(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC)( + GLuint buffer, + GLintptr offset, + GLsizeiptr length, + GLbitfield access + ); + typedef void(APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); + typedef void(APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC)( + GLuint buffer, + GLsizeiptr size, + const void* data, + GLbitfield flags + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC)( + GLuint buffer, + GLenum internalformat, + GLenum format, + GLenum type, + const void* data + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)( + GLuint buffer, + GLenum internalformat, + GLsizeiptr offset, + GLsizeiptr size, + GLenum format, + GLenum type, + const void* data + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)(GLuint framebuffer, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC)(GLuint program, GLint location, GLdouble x); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC)(GLuint program, GLint location, GLdouble x, GLdouble y); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3DEXTPROC)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC)( + GLuint program, + GLint location, + GLdouble x, + GLdouble y, + GLdouble z, + GLdouble w + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC)( + GLuint texture, + GLenum target, + GLenum internalformat, + GLuint buffer, + GLintptr offset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC)( + GLuint texture, + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC)( + GLuint texture, + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC)( + GLuint texture, + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)( + GLuint texture, + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)( + GLuint texture, + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)( + GLuint vaobj, + GLuint bindingindex, + GLuint buffer, + GLintptr offset, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLboolean normalized, + GLuint relativeoffset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLuint relativeoffset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLuint relativeoffset + ); + typedef void(APIENTRYP + PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); + typedef void(APIENTRYP + PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)(GLuint vaobj, GLuint bindingindex, GLuint divisor); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLuint index, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLTEXTUREPAGECOMMITMENTEXTPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean commit + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)(GLuint vaobj, GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMatrixLoadfEXT(GLenum mode, const GLfloat* m); + GLAPI void APIENTRY glMatrixLoaddEXT(GLenum mode, const GLdouble* m); + GLAPI void APIENTRY glMatrixMultfEXT(GLenum mode, const GLfloat* m); + GLAPI void APIENTRY glMatrixMultdEXT(GLenum mode, const GLdouble* m); + GLAPI void APIENTRY glMatrixLoadIdentityEXT(GLenum mode); + GLAPI void APIENTRY glMatrixRotatefEXT(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glMatrixRotatedEXT(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glMatrixScalefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glMatrixScaledEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glMatrixTranslatefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glMatrixTranslatedEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glMatrixFrustumEXT( + GLenum mode, + GLdouble left, + GLdouble right, + GLdouble bottom, + GLdouble top, + GLdouble zNear, + GLdouble zFar + ); + GLAPI void APIENTRY glMatrixOrthoEXT( + GLenum mode, + GLdouble left, + GLdouble right, + GLdouble bottom, + GLdouble top, + GLdouble zNear, + GLdouble zFar + ); + GLAPI void APIENTRY glMatrixPopEXT(GLenum mode); + GLAPI void APIENTRY glMatrixPushEXT(GLenum mode); + GLAPI void APIENTRY glClientAttribDefaultEXT(GLbitfield mask); + GLAPI void APIENTRY glPushClientAttribDefaultEXT(GLbitfield mask); + GLAPI void APIENTRY glTextureParameterfEXT(GLuint texture, GLenum target, GLenum pname, GLfloat param); + GLAPI void APIENTRY glTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glTextureParameteriEXT(GLuint texture, GLenum target, GLenum pname, GLint param); + GLAPI void APIENTRY glTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glTextureImage1DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTextureImage2DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTextureSubImage1DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTextureSubImage2DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glCopyTextureImage1DEXT( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLint border + ); + GLAPI void APIENTRY glCopyTextureImage2DEXT( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border + ); + GLAPI void APIENTRY glCopyTextureSubImage1DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint x, + GLint y, + GLsizei width + ); + GLAPI void APIENTRY glCopyTextureSubImage2DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY + glGetTextureImageEXT(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); + GLAPI void APIENTRY glGetTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY + glGetTextureLevelParameterfvEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat* params); + GLAPI void APIENTRY + glGetTextureLevelParameterivEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLint* params); + GLAPI void APIENTRY glTextureImage3DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTextureSubImage3DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glCopyTextureSubImage3DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glBindMultiTextureEXT(GLenum texunit, GLenum target, GLuint texture); + GLAPI void APIENTRY + glMultiTexCoordPointerEXT(GLenum texunit, GLint size, GLenum type, GLsizei stride, const void* pointer); + GLAPI void APIENTRY glMultiTexEnvfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param); + GLAPI void APIENTRY glMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glMultiTexEnviEXT(GLenum texunit, GLenum target, GLenum pname, GLint param); + GLAPI void APIENTRY glMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glMultiTexGendEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble param); + GLAPI void APIENTRY glMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params); + GLAPI void APIENTRY glMultiTexGenfEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat param); + GLAPI void APIENTRY glMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glMultiTexGeniEXT(GLenum texunit, GLenum coord, GLenum pname, GLint param); + GLAPI void APIENTRY glMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, const GLint* params); + GLAPI void APIENTRY glGetMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble* params); + GLAPI void APIENTRY glGetMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, GLint* params); + GLAPI void APIENTRY glMultiTexParameteriEXT(GLenum texunit, GLenum target, GLenum pname, GLint param); + GLAPI void APIENTRY glMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glMultiTexParameterfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param); + GLAPI void APIENTRY glMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glMultiTexImage1DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glMultiTexImage2DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glMultiTexSubImage1DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glMultiTexSubImage2DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glCopyMultiTexImage1DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLint border + ); + GLAPI void APIENTRY glCopyMultiTexImage2DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border + ); + GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint x, + GLint y, + GLsizei width + ); + GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY + glGetMultiTexImageEXT(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); + GLAPI void APIENTRY glGetMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY + glGetMultiTexLevelParameterfvEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat* params); + GLAPI void APIENTRY + glGetMultiTexLevelParameterivEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint* params); + GLAPI void APIENTRY glMultiTexImage3DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glMultiTexSubImage3DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glEnableClientStateIndexedEXT(GLenum array, GLuint index); + GLAPI void APIENTRY glDisableClientStateIndexedEXT(GLenum array, GLuint index); + GLAPI void APIENTRY glGetFloatIndexedvEXT(GLenum target, GLuint index, GLfloat* data); + GLAPI void APIENTRY glGetDoubleIndexedvEXT(GLenum target, GLuint index, GLdouble* data); + GLAPI void APIENTRY glGetPointerIndexedvEXT(GLenum target, GLuint index, void** data); + GLAPI void APIENTRY glEnableIndexedEXT(GLenum target, GLuint index); + GLAPI void APIENTRY glDisableIndexedEXT(GLenum target, GLuint index); + GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT(GLenum target, GLuint index); + GLAPI void APIENTRY glGetIntegerIndexedvEXT(GLenum target, GLuint index, GLint* data); + GLAPI void APIENTRY glGetBooleanIndexedvEXT(GLenum target, GLuint index, GLboolean* data); + GLAPI void APIENTRY glCompressedTextureImage3DEXT( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedTextureImage2DEXT( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedTextureImage1DEXT( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedTextureSubImage3DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedTextureSubImage2DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedTextureSubImage1DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glGetCompressedTextureImageEXT(GLuint texture, GLenum target, GLint lod, void* img); + GLAPI void APIENTRY glCompressedMultiTexImage3DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedMultiTexImage2DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedMultiTexImage1DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glGetCompressedMultiTexImageEXT(GLenum texunit, GLenum target, GLint lod, void* img); + GLAPI void APIENTRY glMatrixLoadTransposefEXT(GLenum mode, const GLfloat* m); + GLAPI void APIENTRY glMatrixLoadTransposedEXT(GLenum mode, const GLdouble* m); + GLAPI void APIENTRY glMatrixMultTransposefEXT(GLenum mode, const GLfloat* m); + GLAPI void APIENTRY glMatrixMultTransposedEXT(GLenum mode, const GLdouble* m); + GLAPI void APIENTRY glNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const void* data, GLenum usage); + GLAPI void APIENTRY glNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); + GLAPI void* APIENTRY glMapNamedBufferEXT(GLuint buffer, GLenum access); + GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT(GLuint buffer); + GLAPI void APIENTRY glGetNamedBufferParameterivEXT(GLuint buffer, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetNamedBufferPointervEXT(GLuint buffer, GLenum pname, void** params); + GLAPI void APIENTRY glGetNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, void* data); + GLAPI void APIENTRY glProgramUniform1fEXT(GLuint program, GLint location, GLfloat v0); + GLAPI void APIENTRY glProgramUniform2fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1); + GLAPI void APIENTRY glProgramUniform3fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + GLAPI void APIENTRY + glProgramUniform4fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + GLAPI void APIENTRY glProgramUniform1iEXT(GLuint program, GLint location, GLint v0); + GLAPI void APIENTRY glProgramUniform2iEXT(GLuint program, GLint location, GLint v0, GLint v1); + GLAPI void APIENTRY glProgramUniform3iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + GLAPI void APIENTRY glProgramUniform4iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + GLAPI void APIENTRY glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glProgramUniformMatrix2fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glTextureBufferEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); + GLAPI void APIENTRY glMultiTexBufferEXT(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); + GLAPI void APIENTRY glTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, const GLuint* params); + GLAPI void APIENTRY glGetTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, GLuint* params); + GLAPI void APIENTRY glMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, const GLuint* params); + GLAPI void APIENTRY glGetMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, GLuint* params); + GLAPI void APIENTRY glProgramUniform1uiEXT(GLuint program, GLint location, GLuint v0); + GLAPI void APIENTRY glProgramUniform2uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1); + GLAPI void APIENTRY glProgramUniform3uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + GLAPI void APIENTRY + glProgramUniform4uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + GLAPI void APIENTRY glProgramUniform1uivEXT(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glProgramUniform2uivEXT(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glProgramUniform3uivEXT(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glProgramUniform4uivEXT(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT( + GLuint program, + GLenum target, + GLuint index, + GLsizei count, + const GLfloat* params + ); + GLAPI void APIENTRY + glNamedProgramLocalParameterI4iEXT(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); + GLAPI void APIENTRY + glNamedProgramLocalParameterI4ivEXT(GLuint program, GLenum target, GLuint index, const GLint* params); + GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT( + GLuint program, + GLenum target, + GLuint index, + GLsizei count, + const GLint* params + ); + GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT( + GLuint program, + GLenum target, + GLuint index, + GLuint x, + GLuint y, + GLuint z, + GLuint w + ); + GLAPI void APIENTRY + glNamedProgramLocalParameterI4uivEXT(GLuint program, GLenum target, GLuint index, const GLuint* params); + GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT( + GLuint program, + GLenum target, + GLuint index, + GLsizei count, + const GLuint* params + ); + GLAPI void APIENTRY + glGetNamedProgramLocalParameterIivEXT(GLuint program, GLenum target, GLuint index, GLint* params); + GLAPI void APIENTRY + glGetNamedProgramLocalParameterIuivEXT(GLuint program, GLenum target, GLuint index, GLuint* params); + GLAPI void APIENTRY glEnableClientStateiEXT(GLenum array, GLuint index); + GLAPI void APIENTRY glDisableClientStateiEXT(GLenum array, GLuint index); + GLAPI void APIENTRY glGetFloati_vEXT(GLenum pname, GLuint index, GLfloat* params); + GLAPI void APIENTRY glGetDoublei_vEXT(GLenum pname, GLuint index, GLdouble* params); + GLAPI void APIENTRY glGetPointeri_vEXT(GLenum pname, GLuint index, void** params); + GLAPI void APIENTRY + glNamedProgramStringEXT(GLuint program, GLenum target, GLenum format, GLsizei len, const void* string); + GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT( + GLuint program, + GLenum target, + GLuint index, + GLdouble x, + GLdouble y, + GLdouble z, + GLdouble w + ); + GLAPI void APIENTRY + glNamedProgramLocalParameter4dvEXT(GLuint program, GLenum target, GLuint index, const GLdouble* params); + GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT( + GLuint program, + GLenum target, + GLuint index, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w + ); + GLAPI void APIENTRY + glNamedProgramLocalParameter4fvEXT(GLuint program, GLenum target, GLuint index, const GLfloat* params); + GLAPI void APIENTRY + glGetNamedProgramLocalParameterdvEXT(GLuint program, GLenum target, GLuint index, GLdouble* params); + GLAPI void APIENTRY + glGetNamedProgramLocalParameterfvEXT(GLuint program, GLenum target, GLuint index, GLfloat* params); + GLAPI void APIENTRY glGetNamedProgramivEXT(GLuint program, GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetNamedProgramStringEXT(GLuint program, GLenum target, GLenum pname, void* string); + GLAPI void APIENTRY + glNamedRenderbufferStorageEXT(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT(GLuint renderbuffer, GLenum pname, GLint* params); + GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT( + GLuint renderbuffer, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT( + GLuint renderbuffer, + GLsizei coverageSamples, + GLsizei colorSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT(GLuint framebuffer, GLenum target); + GLAPI void APIENTRY glNamedFramebufferTexture1DEXT( + GLuint framebuffer, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level + ); + GLAPI void APIENTRY glNamedFramebufferTexture2DEXT( + GLuint framebuffer, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level + ); + GLAPI void APIENTRY glNamedFramebufferTexture3DEXT( + GLuint framebuffer, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLint zoffset + ); + GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT( + GLuint framebuffer, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer + ); + GLAPI void APIENTRY + glGetNamedFramebufferAttachmentParameterivEXT(GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params); + GLAPI void APIENTRY glGenerateTextureMipmapEXT(GLuint texture, GLenum target); + GLAPI void APIENTRY glGenerateMultiTexMipmapEXT(GLenum texunit, GLenum target); + GLAPI void APIENTRY glFramebufferDrawBufferEXT(GLuint framebuffer, GLenum mode); + GLAPI void APIENTRY glFramebufferDrawBuffersEXT(GLuint framebuffer, GLsizei n, const GLenum* bufs); + GLAPI void APIENTRY glFramebufferReadBufferEXT(GLuint framebuffer, GLenum mode); + GLAPI void APIENTRY glGetFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint* params); + GLAPI void APIENTRY glNamedCopyBufferSubDataEXT( + GLuint readBuffer, + GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size + ); + GLAPI void APIENTRY + glNamedFramebufferTextureEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); + GLAPI void APIENTRY + glNamedFramebufferTextureLayerEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); + GLAPI void APIENTRY + glNamedFramebufferTextureFaceEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); + GLAPI void APIENTRY glTextureRenderbufferEXT(GLuint texture, GLenum target, GLuint renderbuffer); + GLAPI void APIENTRY glMultiTexRenderbufferEXT(GLenum texunit, GLenum target, GLuint renderbuffer); + GLAPI void APIENTRY + glVertexArrayVertexOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); + GLAPI void APIENTRY + glVertexArrayColorOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); + GLAPI void APIENTRY glVertexArrayEdgeFlagOffsetEXT(GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); + GLAPI void APIENTRY + glVertexArrayIndexOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); + GLAPI void APIENTRY + glVertexArrayNormalOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); + GLAPI void APIENTRY glVertexArrayTexCoordOffsetEXT( + GLuint vaobj, + GLuint buffer, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + GLAPI void APIENTRY glVertexArrayMultiTexCoordOffsetEXT( + GLuint vaobj, + GLuint buffer, + GLenum texunit, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + GLAPI void APIENTRY + glVertexArrayFogCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); + GLAPI void APIENTRY glVertexArraySecondaryColorOffsetEXT( + GLuint vaobj, + GLuint buffer, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + GLAPI void APIENTRY glVertexArrayVertexAttribOffsetEXT( + GLuint vaobj, + GLuint buffer, + GLuint index, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + GLintptr offset + ); + GLAPI void APIENTRY glVertexArrayVertexAttribIOffsetEXT( + GLuint vaobj, + GLuint buffer, + GLuint index, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + GLAPI void APIENTRY glEnableVertexArrayEXT(GLuint vaobj, GLenum array); + GLAPI void APIENTRY glDisableVertexArrayEXT(GLuint vaobj, GLenum array); + GLAPI void APIENTRY glEnableVertexArrayAttribEXT(GLuint vaobj, GLuint index); + GLAPI void APIENTRY glDisableVertexArrayAttribEXT(GLuint vaobj, GLuint index); + GLAPI void APIENTRY glGetVertexArrayIntegervEXT(GLuint vaobj, GLenum pname, GLint* param); + GLAPI void APIENTRY glGetVertexArrayPointervEXT(GLuint vaobj, GLenum pname, void** param); + GLAPI void APIENTRY glGetVertexArrayIntegeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, GLint* param); + GLAPI void APIENTRY glGetVertexArrayPointeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, void** param); + GLAPI void* APIENTRY glMapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); + GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length); + GLAPI void APIENTRY glNamedBufferStorageEXT(GLuint buffer, GLsizeiptr size, const void* data, GLbitfield flags); + GLAPI void APIENTRY + glClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void* data); + GLAPI void APIENTRY glClearNamedBufferSubDataEXT( + GLuint buffer, + GLenum internalformat, + GLsizeiptr offset, + GLsizeiptr size, + GLenum format, + GLenum type, + const void* data + ); + GLAPI void APIENTRY glNamedFramebufferParameteriEXT(GLuint framebuffer, GLenum pname, GLint param); + GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint* params); + GLAPI void APIENTRY glProgramUniform1dEXT(GLuint program, GLint location, GLdouble x); + GLAPI void APIENTRY glProgramUniform2dEXT(GLuint program, GLint location, GLdouble x, GLdouble y); + GLAPI void APIENTRY glProgramUniform3dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY + glProgramUniform4dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glProgramUniform1dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniform2dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniform3dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniform4dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniformMatrix2dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glTextureBufferRangeEXT( + GLuint texture, + GLenum target, + GLenum internalformat, + GLuint buffer, + GLintptr offset, + GLsizeiptr size + ); + GLAPI void APIENTRY + glTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + GLAPI void APIENTRY glTextureStorage2DEXT( + GLuint texture, + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glTextureStorage3DEXT( + GLuint texture, + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth + ); + GLAPI void APIENTRY glTextureStorage2DMultisampleEXT( + GLuint texture, + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY glTextureStorage3DMultisampleEXT( + GLuint texture, + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY + glVertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLboolean normalized, + GLuint relativeoffset + ); + GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLuint relativeoffset + ); + GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLuint relativeoffset + ); + GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint attribindex, GLuint bindingindex); + GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bindingindex, GLuint divisor); + GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT( + GLuint vaobj, + GLuint buffer, + GLuint index, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + GLAPI void APIENTRY glTexturePageCommitmentEXT( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean commit + ); + GLAPI void APIENTRY glVertexArrayVertexAttribDivisorEXT(GLuint vaobj, GLuint index, GLuint divisor); +#endif +#endif /* GL_EXT_direct_state_access */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 + typedef void(APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC)(GLenum mode, GLint start, GLsizei count, GLsizei primcount); + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC)( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawArraysInstancedEXT(GLenum mode, GLint start, GLsizei count, GLsizei primcount); + GLAPI void APIENTRY + glDrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); +#endif +#endif /* GL_EXT_draw_instanced */ + +#ifndef GL_EXT_fragment_shading_rate +#define GL_EXT_fragment_shading_rate 1 +#define GL_SHADING_RATE_1X1_PIXELS_EXT 0x96A6 +#define GL_SHADING_RATE_1X2_PIXELS_EXT 0x96A7 +#define GL_SHADING_RATE_2X1_PIXELS_EXT 0x96A8 +#define GL_SHADING_RATE_2X2_PIXELS_EXT 0x96A9 +#define GL_SHADING_RATE_1X4_PIXELS_EXT 0x96AA +#define GL_SHADING_RATE_4X1_PIXELS_EXT 0x96AB +#define GL_SHADING_RATE_4X2_PIXELS_EXT 0x96AC +#define GL_SHADING_RATE_2X4_PIXELS_EXT 0x96AD +#define GL_SHADING_RATE_4X4_PIXELS_EXT 0x96AE +#define GL_SHADING_RATE_EXT 0x96D0 +#define GL_SHADING_RATE_ATTACHMENT_EXT 0x96D1 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT 0x96D2 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_EXT 0x96D3 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_EXT 0x96D4 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_EXT 0x96D5 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_EXT 0x96D6 +#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D7 +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D8 +#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96D9 +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96DA +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_ASPECT_RATIO_EXT 0x96DB +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_LAYERS_EXT 0x96DC +#define GL_FRAGMENT_SHADING_RATE_WITH_SHADER_DEPTH_STENCIL_WRITES_SUPPORTED_EXT 0x96DD +#define GL_FRAGMENT_SHADING_RATE_WITH_SAMPLE_MASK_SUPPORTED_EXT 0x96DE +#define GL_FRAGMENT_SHADING_RATE_ATTACHMENT_WITH_DEFAULT_FRAMEBUFFER_SUPPORTED_EXT 0x96DF +#define GL_FRAGMENT_SHADING_RATE_NON_TRIVIAL_COMBINERS_SUPPORTED_EXT 0x8F6F +#define GL_FRAGMENT_SHADING_RATE_PRIMITIVE_RATE_WITH_MULTI_VIEWPORT_SUPPORTED_EXT 0x9780 + typedef void(APIENTRYP PFNGLGETFRAGMENTSHADINGRATESEXTPROC)( + GLsizei samples, + GLsizei maxCount, + GLsizei* count, + GLenum* shadingRates + ); + typedef void(APIENTRYP PFNGLSHADINGRATEEXTPROC)(GLenum rate); + typedef void(APIENTRYP PFNGLSHADINGRATECOMBINEROPSEXTPROC)(GLenum combinerOp0, GLenum combinerOp1); + typedef void(APIENTRYP PFNGLFRAMEBUFFERSHADINGRATEEXTPROC)( + GLenum target, + GLenum attachment, + GLuint texture, + GLint baseLayer, + GLsizei numLayers, + GLsizei texelWidth, + GLsizei texelHeight + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glGetFragmentShadingRatesEXT(GLsizei samples, GLsizei maxCount, GLsizei* count, GLenum* shadingRates); + GLAPI void APIENTRY glShadingRateEXT(GLenum rate); + GLAPI void APIENTRY glShadingRateCombinerOpsEXT(GLenum combinerOp0, GLenum combinerOp1); + GLAPI void APIENTRY glFramebufferShadingRateEXT( + GLenum target, + GLenum attachment, + GLuint texture, + GLint baseLayer, + GLsizei numLayers, + GLsizei texelWidth, + GLsizei texelHeight + ); +#endif +#endif /* GL_EXT_fragment_shading_rate */ + +#ifndef GL_EXT_mesh_shader +#define GL_EXT_mesh_shader 1 +#define GL_MESH_SHADER_EXT 0x9559 +#define GL_TASK_SHADER_EXT 0x955A +#define GL_MAX_MESH_UNIFORM_BLOCKS_EXT 0x8E60 +#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_EXT 0x8E61 +#define GL_MAX_MESH_IMAGE_UNIFORMS_EXT 0x8E62 +#define GL_MAX_MESH_UNIFORM_COMPONENTS_EXT 0x8E63 +#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_EXT 0x8E64 +#define GL_MAX_MESH_ATOMIC_COUNTERS_EXT 0x8E65 +#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_EXT 0x8E66 +#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_EXT 0x8E67 +#define GL_MAX_TASK_UNIFORM_BLOCKS_EXT 0x8E68 +#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_EXT 0x8E69 +#define GL_MAX_TASK_IMAGE_UNIFORMS_EXT 0x8E6A +#define GL_MAX_TASK_UNIFORM_COMPONENTS_EXT 0x8E6B +#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_EXT 0x8E6C +#define GL_MAX_TASK_ATOMIC_COUNTERS_EXT 0x8E6D +#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_EXT 0x8E6E +#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_EXT 0x8E6F +#define GL_MAX_TASK_WORK_GROUP_TOTAL_COUNT_EXT 0x9740 +#define GL_MAX_MESH_WORK_GROUP_TOTAL_COUNT_EXT 0x9741 +#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_EXT 0x9757 +#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_EXT 0x9759 +#define GL_MAX_TASK_PAYLOAD_SIZE_EXT 0x9742 +#define GL_MAX_TASK_SHARED_MEMORY_SIZE_EXT 0x9743 +#define GL_MAX_MESH_SHARED_MEMORY_SIZE_EXT 0x9744 +#define GL_MAX_TASK_PAYLOAD_AND_SHARED_MEMORY_SIZE_EXT 0x9745 +#define GL_MAX_MESH_PAYLOAD_AND_SHARED_MEMORY_SIZE_EXT 0x9746 +#define GL_MAX_MESH_OUTPUT_MEMORY_SIZE_EXT 0x9747 +#define GL_MAX_MESH_PAYLOAD_AND_OUTPUT_MEMORY_SIZE_EXT 0x9748 +#define GL_MAX_MESH_OUTPUT_VERTICES_EXT 0x9538 +#define GL_MAX_MESH_OUTPUT_PRIMITIVES_EXT 0x9756 +#define GL_MAX_MESH_OUTPUT_COMPONENTS_EXT 0x9749 +#define GL_MAX_MESH_OUTPUT_LAYERS_EXT 0x974A +#define GL_MAX_MESH_MULTIVIEW_VIEW_COUNT_EXT 0x9557 +#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_EXT 0x92DF +#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_EXT 0x9543 +#define GL_MAX_PREFERRED_TASK_WORK_GROUP_INVOCATIONS_EXT 0x974B +#define GL_MAX_PREFERRED_MESH_WORK_GROUP_INVOCATIONS_EXT 0x974C +#define GL_MESH_PREFERS_LOCAL_INVOCATION_VERTEX_OUTPUT_EXT 0x974D +#define GL_MESH_PREFERS_LOCAL_INVOCATION_PRIMITIVE_OUTPUT_EXT 0x974E +#define GL_MESH_PREFERS_COMPACT_VERTEX_OUTPUT_EXT 0x974F +#define GL_MESH_PREFERS_COMPACT_PRIMITIVE_OUTPUT_EXT 0x9750 +#define GL_MAX_TASK_WORK_GROUP_COUNT_EXT 0x9751 +#define GL_MAX_MESH_WORK_GROUP_COUNT_EXT 0x9752 +#define GL_MAX_MESH_WORK_GROUP_SIZE_EXT 0x9758 +#define GL_MAX_TASK_WORK_GROUP_SIZE_EXT 0x975A +#define GL_MESH_WORK_GROUP_SIZE_EXT 0x953E +#define GL_TASK_WORK_GROUP_SIZE_EXT 0x953F +#define GL_MESH_VERTICES_OUT_EXT 0x9579 +#define GL_MESH_PRIMITIVES_OUT_EXT 0x957A +#define GL_MESH_OUTPUT_TYPE_EXT 0x957B +#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_EXT 0x959C +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_EXT 0x959D +#define GL_REFERENCED_BY_MESH_SHADER_EXT 0x95A0 +#define GL_REFERENCED_BY_TASK_SHADER_EXT 0x95A1 +#define GL_TASK_SHADER_INVOCATIONS_EXT 0x9753 +#define GL_MESH_SHADER_INVOCATIONS_EXT 0x9754 +#define GL_MESH_PRIMITIVES_GENERATED_EXT 0x9755 +#define GL_MESH_SHADER_BIT_EXT 0x00000040 +#define GL_TASK_SHADER_BIT_EXT 0x00000080 +#define GL_MESH_SUBROUTINE_EXT 0x957C +#define GL_TASK_SUBROUTINE_EXT 0x957D +#define GL_MESH_SUBROUTINE_UNIFORM_EXT 0x957E +#define GL_TASK_SUBROUTINE_UNIFORM_EXT 0x957F +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_EXT 0x959E +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_EXT 0x959F + typedef void(APIENTRYP PFNGLDRAWMESHTASKSEXTPROC)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + typedef void(APIENTRYP PFNGLDRAWMESHTASKSINDIRECTEXTPROC)(GLintptr indirect); + typedef void(APIENTRYP + PFNGLMULTIDRAWMESHTASKSINDIRECTEXTPROC)(GLintptr indirect, GLsizei drawcount, GLsizei stride); + typedef void(APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTEXTPROC)( + GLintptr indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawMeshTasksEXT(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + GLAPI void APIENTRY glDrawMeshTasksIndirectEXT(GLintptr indirect); + GLAPI void APIENTRY glMultiDrawMeshTasksIndirectEXT(GLintptr indirect, GLsizei drawcount, GLsizei stride); + GLAPI void APIENTRY + glMultiDrawMeshTasksIndirectCountEXT(GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_EXT_mesh_shader */ + +#ifndef GL_EXT_multiview_tessellation_geometry_shader +#define GL_EXT_multiview_tessellation_geometry_shader 1 +#endif /* GL_EXT_multiview_tessellation_geometry_shader */ + +#ifndef GL_EXT_multiview_texture_multisample +#define GL_EXT_multiview_texture_multisample 1 +#endif /* GL_EXT_multiview_texture_multisample */ + +#ifndef GL_EXT_multiview_timer_query +#define GL_EXT_multiview_timer_query 1 +#endif /* GL_EXT_multiview_timer_query */ + +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B + typedef void(APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC)(GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPolygonOffsetClampEXT(GLfloat factor, GLfloat units, GLfloat clamp); +#endif +#endif /* GL_EXT_polygon_offset_clamp */ + +#ifndef GL_EXT_post_depth_coverage +#define GL_EXT_post_depth_coverage 1 +#endif /* GL_EXT_post_depth_coverage */ + +#ifndef GL_EXT_raster_multisample +#define GL_EXT_raster_multisample 1 +#define GL_RASTER_MULTISAMPLE_EXT 0x9327 +#define GL_RASTER_SAMPLES_EXT 0x9328 +#define GL_MAX_RASTER_SAMPLES_EXT 0x9329 +#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A +#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B +#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C + typedef void(APIENTRYP PFNGLRASTERSAMPLESEXTPROC)(GLuint samples, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glRasterSamplesEXT(GLuint samples, GLboolean fixedsamplelocations); +#endif +#endif /* GL_EXT_raster_multisample */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#define GL_ACTIVE_PROGRAM_EXT 0x8B8D + typedef void(APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC)(GLenum type, GLuint program); + typedef void(APIENTRYP PFNGLACTIVEPROGRAMEXTPROC)(GLuint program); + typedef GLuint(APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC)(GLenum type, const GLchar* string); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glUseShaderProgramEXT(GLenum type, GLuint program); + GLAPI void APIENTRY glActiveProgramEXT(GLuint program); + GLAPI GLuint APIENTRY glCreateShaderProgramEXT(GLenum type, const GLchar* string); +#endif +#endif /* GL_EXT_separate_shader_objects */ + +#ifndef GL_EXT_shader_framebuffer_fetch +#define GL_EXT_shader_framebuffer_fetch 1 +#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 +#endif /* GL_EXT_shader_framebuffer_fetch */ + +#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent +#define GL_EXT_shader_framebuffer_fetch_non_coherent 1 + typedef void(APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFramebufferFetchBarrierEXT(void); +#endif +#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */ + +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 +#endif /* GL_EXT_shader_integer_mix */ + +#ifndef GL_EXT_texture_compression_s3tc +#define GL_EXT_texture_compression_s3tc 1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif /* GL_EXT_texture_compression_s3tc */ + +#ifndef GL_EXT_texture_filter_minmax +#define GL_EXT_texture_filter_minmax 1 +#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366 +#define GL_WEIGHTED_AVERAGE_EXT 0x9367 +#endif /* GL_EXT_texture_filter_minmax */ + +#ifndef GL_EXT_texture_sRGB +#define GL_EXT_texture_sRGB 1 +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB8_EXT 0x8C41 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 +#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 +#define GL_SLUMINANCE_EXT 0x8C46 +#define GL_SLUMINANCE8_EXT 0x8C47 +#define GL_COMPRESSED_SRGB_EXT 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 +#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +#endif /* GL_EXT_texture_sRGB */ + +#ifndef GL_EXT_texture_sRGB_R8 +#define GL_EXT_texture_sRGB_R8 1 +#define GL_SR8_EXT 0x8FBD +#endif /* GL_EXT_texture_sRGB_R8 */ + +#ifndef GL_EXT_texture_sRGB_RG8 +#define GL_EXT_texture_sRGB_RG8 1 +#define GL_SRG8_EXT 0x8FBE +#endif /* GL_EXT_texture_sRGB_RG8 */ + +#ifndef GL_EXT_texture_sRGB_decode +#define GL_EXT_texture_sRGB_decode 1 +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_DECODE_EXT 0x8A49 +#define GL_SKIP_DECODE_EXT 0x8A4A +#endif /* GL_EXT_texture_sRGB_decode */ + +#ifndef GL_EXT_texture_shadow_lod +#define GL_EXT_texture_shadow_lod 1 +#endif /* GL_EXT_texture_shadow_lod */ + +#ifndef GL_EXT_texture_storage +#define GL_EXT_texture_storage 1 +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_ALPHA8_EXT 0x803C +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGB32F_EXT 0x8815 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGB10_EXT 0x8052 +#define GL_BGRA8_EXT 0x93A1 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +#define GL_R16F_EXT 0x822D +#define GL_RG16F_EXT 0x822F + typedef void(APIENTRYP + PFNGLTEXSTORAGE1DEXTPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + typedef void(APIENTRYP PFNGLTEXSTORAGE2DEXTPROC)( + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLTEXSTORAGE3DEXTPROC)( + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTexStorage1DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + GLAPI void APIENTRY + glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI void APIENTRY glTexStorage3DEXT( + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth + ); +#endif +#endif /* GL_EXT_texture_storage */ + +#ifndef GL_EXT_window_rectangles +#define GL_EXT_window_rectangles 1 +#define GL_INCLUSIVE_EXT 0x8F10 +#define GL_EXCLUSIVE_EXT 0x8F11 +#define GL_WINDOW_RECTANGLE_EXT 0x8F12 +#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13 +#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14 +#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15 + typedef void(APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC)(GLenum mode, GLsizei count, const GLint* box); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glWindowRectanglesEXT(GLenum mode, GLsizei count, const GLint* box); +#endif +#endif /* GL_EXT_window_rectangles */ + +#ifndef GL_INTEL_blackhole_render +#define GL_INTEL_blackhole_render 1 +#define GL_BLACKHOLE_RENDER_INTEL 0x83FC +#endif /* GL_INTEL_blackhole_render */ + +#ifndef GL_INTEL_conservative_rasterization +#define GL_INTEL_conservative_rasterization 1 +#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE +#endif /* GL_INTEL_conservative_rasterization */ + +#ifndef GL_INTEL_framebuffer_CMAA +#define GL_INTEL_framebuffer_CMAA 1 + typedef void(APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glApplyFramebufferAttachmentCMAAINTEL(void); +#endif +#endif /* GL_INTEL_framebuffer_CMAA */ + +#ifndef GL_INTEL_performance_query +#define GL_INTEL_performance_query 1 +#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 +#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001 +#define GL_PERFQUERY_WAIT_INTEL 0x83FB +#define GL_PERFQUERY_FLUSH_INTEL 0x83FA +#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 +#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0 +#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1 +#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2 +#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3 +#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4 +#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5 +#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8 +#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9 +#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA +#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB +#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC +#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD +#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE +#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF +#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 + typedef void(APIENTRYP PFNGLBEGINPERFQUERYINTELPROC)(GLuint queryHandle); + typedef void(APIENTRYP PFNGLCREATEPERFQUERYINTELPROC)(GLuint queryId, GLuint* queryHandle); + typedef void(APIENTRYP PFNGLDELETEPERFQUERYINTELPROC)(GLuint queryHandle); + typedef void(APIENTRYP PFNGLENDPERFQUERYINTELPROC)(GLuint queryHandle); + typedef void(APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC)(GLuint* queryId); + typedef void(APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC)(GLuint queryId, GLuint* nextQueryId); + typedef void(APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC)( + GLuint queryId, + GLuint counterId, + GLuint counterNameLength, + GLchar* counterName, + GLuint counterDescLength, + GLchar* counterDesc, + GLuint* counterOffset, + GLuint* counterDataSize, + GLuint* counterTypeEnum, + GLuint* counterDataTypeEnum, + GLuint64* rawCounterMaxValue + ); + typedef void(APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC)( + GLuint queryHandle, + GLuint flags, + GLsizei dataSize, + void* data, + GLuint* bytesWritten + ); + typedef void(APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC)(GLchar* queryName, GLuint* queryId); + typedef void(APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC)( + GLuint queryId, + GLuint queryNameLength, + GLchar* queryName, + GLuint* dataSize, + GLuint* noCounters, + GLuint* noInstances, + GLuint* capsMask + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBeginPerfQueryINTEL(GLuint queryHandle); + GLAPI void APIENTRY glCreatePerfQueryINTEL(GLuint queryId, GLuint* queryHandle); + GLAPI void APIENTRY glDeletePerfQueryINTEL(GLuint queryHandle); + GLAPI void APIENTRY glEndPerfQueryINTEL(GLuint queryHandle); + GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL(GLuint* queryId); + GLAPI void APIENTRY glGetNextPerfQueryIdINTEL(GLuint queryId, GLuint* nextQueryId); + GLAPI void APIENTRY glGetPerfCounterInfoINTEL( + GLuint queryId, + GLuint counterId, + GLuint counterNameLength, + GLchar* counterName, + GLuint counterDescLength, + GLchar* counterDesc, + GLuint* counterOffset, + GLuint* counterDataSize, + GLuint* counterTypeEnum, + GLuint* counterDataTypeEnum, + GLuint64* rawCounterMaxValue + ); + GLAPI void APIENTRY + glGetPerfQueryDataINTEL(GLuint queryHandle, GLuint flags, GLsizei dataSize, void* data, GLuint* bytesWritten); + GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL(GLchar* queryName, GLuint* queryId); + GLAPI void APIENTRY glGetPerfQueryInfoINTEL( + GLuint queryId, + GLuint queryNameLength, + GLchar* queryName, + GLuint* dataSize, + GLuint* noCounters, + GLuint* noInstances, + GLuint* capsMask + ); +#endif +#endif /* GL_INTEL_performance_query */ + +#ifndef GL_MESA_framebuffer_flip_x +#define GL_MESA_framebuffer_flip_x 1 +#define GL_FRAMEBUFFER_FLIP_X_MESA 0x8BBC +#endif /* GL_MESA_framebuffer_flip_x */ + +#ifndef GL_MESA_framebuffer_flip_y +#define GL_MESA_framebuffer_flip_y 1 +#define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB + typedef void(APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC)(GLenum target, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC)(GLenum target, GLenum pname, GLint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFramebufferParameteriMESA(GLenum target, GLenum pname, GLint param); + GLAPI void APIENTRY glGetFramebufferParameterivMESA(GLenum target, GLenum pname, GLint* params); +#endif +#endif /* GL_MESA_framebuffer_flip_y */ + +#ifndef GL_MESA_framebuffer_swap_xy +#define GL_MESA_framebuffer_swap_xy 1 +#define GL_FRAMEBUFFER_SWAP_XY_MESA 0x8BBD +#endif /* GL_MESA_framebuffer_swap_xy */ + +#ifndef GL_NV_bindless_multi_draw_indirect +#define GL_NV_bindless_multi_draw_indirect 1 + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)( + GLenum mode, + const void* indirect, + GLsizei drawCount, + GLsizei stride, + GLint vertexBufferCount + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)( + GLenum mode, + GLenum type, + const void* indirect, + GLsizei drawCount, + GLsizei stride, + GLint vertexBufferCount + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessNV( + GLenum mode, + const void* indirect, + GLsizei drawCount, + GLsizei stride, + GLint vertexBufferCount + ); + GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessNV( + GLenum mode, + GLenum type, + const void* indirect, + GLsizei drawCount, + GLsizei stride, + GLint vertexBufferCount + ); +#endif +#endif /* GL_NV_bindless_multi_draw_indirect */ + +#ifndef GL_NV_bindless_multi_draw_indirect_count +#define GL_NV_bindless_multi_draw_indirect_count 1 + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)( + GLenum mode, + const void* indirect, + GLsizei drawCount, + GLsizei maxDrawCount, + GLsizei stride, + GLint vertexBufferCount + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)( + GLenum mode, + GLenum type, + const void* indirect, + GLsizei drawCount, + GLsizei maxDrawCount, + GLsizei stride, + GLint vertexBufferCount + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessCountNV( + GLenum mode, + const void* indirect, + GLsizei drawCount, + GLsizei maxDrawCount, + GLsizei stride, + GLint vertexBufferCount + ); + GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessCountNV( + GLenum mode, + GLenum type, + const void* indirect, + GLsizei drawCount, + GLsizei maxDrawCount, + GLsizei stride, + GLint vertexBufferCount + ); +#endif +#endif /* GL_NV_bindless_multi_draw_indirect_count */ + +#ifndef GL_NV_bindless_texture +#define GL_NV_bindless_texture 1 + typedef GLuint64(APIENTRYP PFNGLGETTEXTUREHANDLENVPROC)(GLuint texture); + typedef GLuint64(APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC)(GLuint texture, GLuint sampler); + typedef void(APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle); + typedef void(APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)(GLuint64 handle); + typedef GLuint64(APIENTRYP PFNGLGETIMAGEHANDLENVPROC)( + GLuint texture, + GLint level, + GLboolean layered, + GLint layer, + GLenum format + ); + typedef void(APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle, GLenum access); + typedef void(APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)(GLuint64 handle); + typedef void(APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC)(GLint location, GLuint64 value); + typedef void(APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC)(GLint location, GLsizei count, const GLuint64* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)(GLuint program, GLint location, GLuint64 value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64* values + ); + typedef GLboolean(APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle); + typedef GLboolean(APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLuint64 APIENTRY glGetTextureHandleNV(GLuint texture); + GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleNV(GLuint texture, GLuint sampler); + GLAPI void APIENTRY glMakeTextureHandleResidentNV(GLuint64 handle); + GLAPI void APIENTRY glMakeTextureHandleNonResidentNV(GLuint64 handle); + GLAPI GLuint64 APIENTRY + glGetImageHandleNV(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); + GLAPI void APIENTRY glMakeImageHandleResidentNV(GLuint64 handle, GLenum access); + GLAPI void APIENTRY glMakeImageHandleNonResidentNV(GLuint64 handle); + GLAPI void APIENTRY glUniformHandleui64NV(GLint location, GLuint64 value); + GLAPI void APIENTRY glUniformHandleui64vNV(GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glProgramUniformHandleui64NV(GLuint program, GLint location, GLuint64 value); + GLAPI void APIENTRY + glProgramUniformHandleui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64* values); + GLAPI GLboolean APIENTRY glIsTextureHandleResidentNV(GLuint64 handle); + GLAPI GLboolean APIENTRY glIsImageHandleResidentNV(GLuint64 handle); +#endif +#endif /* GL_NV_bindless_texture */ + +#ifndef GL_NV_blend_equation_advanced +#define GL_NV_blend_equation_advanced 1 +#define GL_BLEND_OVERLAP_NV 0x9281 +#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 +#define GL_BLUE_NV 0x1905 +#define GL_COLORBURN_NV 0x929A +#define GL_COLORDODGE_NV 0x9299 +#define GL_CONJOINT_NV 0x9284 +#define GL_CONTRAST_NV 0x92A1 +#define GL_DARKEN_NV 0x9297 +#define GL_DIFFERENCE_NV 0x929E +#define GL_DISJOINT_NV 0x9283 +#define GL_DST_ATOP_NV 0x928F +#define GL_DST_IN_NV 0x928B +#define GL_DST_NV 0x9287 +#define GL_DST_OUT_NV 0x928D +#define GL_DST_OVER_NV 0x9289 +#define GL_EXCLUSION_NV 0x92A0 +#define GL_GREEN_NV 0x1904 +#define GL_HARDLIGHT_NV 0x929B +#define GL_HARDMIX_NV 0x92A9 +#define GL_HSL_COLOR_NV 0x92AF +#define GL_HSL_HUE_NV 0x92AD +#define GL_HSL_LUMINOSITY_NV 0x92B0 +#define GL_HSL_SATURATION_NV 0x92AE +#define GL_INVERT_OVG_NV 0x92B4 +#define GL_INVERT_RGB_NV 0x92A3 +#define GL_LIGHTEN_NV 0x9298 +#define GL_LINEARBURN_NV 0x92A5 +#define GL_LINEARDODGE_NV 0x92A4 +#define GL_LINEARLIGHT_NV 0x92A7 +#define GL_MINUS_CLAMPED_NV 0x92B3 +#define GL_MINUS_NV 0x929F +#define GL_MULTIPLY_NV 0x9294 +#define GL_OVERLAY_NV 0x9296 +#define GL_PINLIGHT_NV 0x92A8 +#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 +#define GL_PLUS_CLAMPED_NV 0x92B1 +#define GL_PLUS_DARKER_NV 0x9292 +#define GL_PLUS_NV 0x9291 +#define GL_RED_NV 0x1903 +#define GL_SCREEN_NV 0x9295 +#define GL_SOFTLIGHT_NV 0x929C +#define GL_SRC_ATOP_NV 0x928E +#define GL_SRC_IN_NV 0x928A +#define GL_SRC_NV 0x9286 +#define GL_SRC_OUT_NV 0x928C +#define GL_SRC_OVER_NV 0x9288 +#define GL_UNCORRELATED_NV 0x9282 +#define GL_VIVIDLIGHT_NV 0x92A6 +#define GL_XOR_NV 0x1506 + typedef void(APIENTRYP PFNGLBLENDPARAMETERINVPROC)(GLenum pname, GLint value); + typedef void(APIENTRYP PFNGLBLENDBARRIERNVPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBlendParameteriNV(GLenum pname, GLint value); + GLAPI void APIENTRY glBlendBarrierNV(void); +#endif +#endif /* GL_NV_blend_equation_advanced */ + +#ifndef GL_NV_blend_equation_advanced_coherent +#define GL_NV_blend_equation_advanced_coherent 1 +#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 +#endif /* GL_NV_blend_equation_advanced_coherent */ + +#ifndef GL_NV_blend_minmax_factor +#define GL_NV_blend_minmax_factor 1 +#define GL_FACTOR_MIN_AMD 0x901C +#define GL_FACTOR_MAX_AMD 0x901D +#endif /* GL_NV_blend_minmax_factor */ + +#ifndef GL_NV_clip_space_w_scaling +#define GL_NV_clip_space_w_scaling 1 +#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C +#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D +#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E + typedef void(APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC)(GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glViewportPositionWScaleNV(GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#endif +#endif /* GL_NV_clip_space_w_scaling */ + +#ifndef GL_NV_command_list +#define GL_NV_command_list 1 +#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000 +#define GL_NOP_COMMAND_NV 0x0001 +#define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002 +#define GL_DRAW_ARRAYS_COMMAND_NV 0x0003 +#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004 +#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005 +#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006 +#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007 +#define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008 +#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009 +#define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000A +#define GL_BLEND_COLOR_COMMAND_NV 0x000B +#define GL_STENCIL_REF_COMMAND_NV 0x000C +#define GL_LINE_WIDTH_COMMAND_NV 0x000D +#define GL_POLYGON_OFFSET_COMMAND_NV 0x000E +#define GL_ALPHA_REF_COMMAND_NV 0x000F +#define GL_VIEWPORT_COMMAND_NV 0x0010 +#define GL_SCISSOR_COMMAND_NV 0x0011 +#define GL_FRONT_FACE_COMMAND_NV 0x0012 + typedef void(APIENTRYP PFNGLCREATESTATESNVPROC)(GLsizei n, GLuint* states); + typedef void(APIENTRYP PFNGLDELETESTATESNVPROC)(GLsizei n, const GLuint* states); + typedef GLboolean(APIENTRYP PFNGLISSTATENVPROC)(GLuint state); + typedef void(APIENTRYP PFNGLSTATECAPTURENVPROC)(GLuint state, GLenum mode); + typedef GLuint(APIENTRYP PFNGLGETCOMMANDHEADERNVPROC)(GLenum tokenID, GLuint size); + typedef GLushort(APIENTRYP PFNGLGETSTAGEINDEXNVPROC)(GLenum shadertype); + typedef void(APIENTRYP PFNGLDRAWCOMMANDSNVPROC)( + GLenum primitiveMode, + GLuint buffer, + const GLintptr* indirects, + const GLsizei* sizes, + GLuint count + ); + typedef void(APIENTRYP PFNGLDRAWCOMMANDSADDRESSNVPROC)( + GLenum primitiveMode, + const GLuint64* indirects, + const GLsizei* sizes, + GLuint count + ); + typedef void(APIENTRYP PFNGLDRAWCOMMANDSSTATESNVPROC)( + GLuint buffer, + const GLintptr* indirects, + const GLsizei* sizes, + const GLuint* states, + const GLuint* fbos, + GLuint count + ); + typedef void(APIENTRYP PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)( + const GLuint64* indirects, + const GLsizei* sizes, + const GLuint* states, + const GLuint* fbos, + GLuint count + ); + typedef void(APIENTRYP PFNGLCREATECOMMANDLISTSNVPROC)(GLsizei n, GLuint* lists); + typedef void(APIENTRYP PFNGLDELETECOMMANDLISTSNVPROC)(GLsizei n, const GLuint* lists); + typedef GLboolean(APIENTRYP PFNGLISCOMMANDLISTNVPROC)(GLuint list); + typedef void(APIENTRYP PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)( + GLuint list, + GLuint segment, + const void** indirects, + const GLsizei* sizes, + const GLuint* states, + const GLuint* fbos, + GLuint count + ); + typedef void(APIENTRYP PFNGLCOMMANDLISTSEGMENTSNVPROC)(GLuint list, GLuint segments); + typedef void(APIENTRYP PFNGLCOMPILECOMMANDLISTNVPROC)(GLuint list); + typedef void(APIENTRYP PFNGLCALLCOMMANDLISTNVPROC)(GLuint list); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glCreateStatesNV(GLsizei n, GLuint* states); + GLAPI void APIENTRY glDeleteStatesNV(GLsizei n, const GLuint* states); + GLAPI GLboolean APIENTRY glIsStateNV(GLuint state); + GLAPI void APIENTRY glStateCaptureNV(GLuint state, GLenum mode); + GLAPI GLuint APIENTRY glGetCommandHeaderNV(GLenum tokenID, GLuint size); + GLAPI GLushort APIENTRY glGetStageIndexNV(GLenum shadertype); + GLAPI void APIENTRY glDrawCommandsNV( + GLenum primitiveMode, + GLuint buffer, + const GLintptr* indirects, + const GLsizei* sizes, + GLuint count + ); + GLAPI void APIENTRY + glDrawCommandsAddressNV(GLenum primitiveMode, const GLuint64* indirects, const GLsizei* sizes, GLuint count); + GLAPI void APIENTRY glDrawCommandsStatesNV( + GLuint buffer, + const GLintptr* indirects, + const GLsizei* sizes, + const GLuint* states, + const GLuint* fbos, + GLuint count + ); + GLAPI void APIENTRY glDrawCommandsStatesAddressNV( + const GLuint64* indirects, + const GLsizei* sizes, + const GLuint* states, + const GLuint* fbos, + GLuint count + ); + GLAPI void APIENTRY glCreateCommandListsNV(GLsizei n, GLuint* lists); + GLAPI void APIENTRY glDeleteCommandListsNV(GLsizei n, const GLuint* lists); + GLAPI GLboolean APIENTRY glIsCommandListNV(GLuint list); + GLAPI void APIENTRY glListDrawCommandsStatesClientNV( + GLuint list, + GLuint segment, + const void** indirects, + const GLsizei* sizes, + const GLuint* states, + const GLuint* fbos, + GLuint count + ); + GLAPI void APIENTRY glCommandListSegmentsNV(GLuint list, GLuint segments); + GLAPI void APIENTRY glCompileCommandListNV(GLuint list); + GLAPI void APIENTRY glCallCommandListNV(GLuint list); +#endif +#endif /* GL_NV_command_list */ + +#ifndef GL_NV_compute_shader_derivatives +#define GL_NV_compute_shader_derivatives 1 +#endif /* GL_NV_compute_shader_derivatives */ + +#ifndef GL_NV_conditional_render +#define GL_NV_conditional_render 1 +#define GL_QUERY_WAIT_NV 0x8E13 +#define GL_QUERY_NO_WAIT_NV 0x8E14 +#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 + typedef void(APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC)(GLuint id, GLenum mode); + typedef void(APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBeginConditionalRenderNV(GLuint id, GLenum mode); + GLAPI void APIENTRY glEndConditionalRenderNV(void); +#endif +#endif /* GL_NV_conditional_render */ + +#ifndef GL_NV_conservative_raster +#define GL_NV_conservative_raster 1 +#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346 +#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347 +#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348 +#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349 + typedef void(APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC)(GLuint xbits, GLuint ybits); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glSubpixelPrecisionBiasNV(GLuint xbits, GLuint ybits); +#endif +#endif /* GL_NV_conservative_raster */ + +#ifndef GL_NV_conservative_raster_dilate +#define GL_NV_conservative_raster_dilate 1 +#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379 +#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A +#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B + typedef void(APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)(GLenum pname, GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glConservativeRasterParameterfNV(GLenum pname, GLfloat value); +#endif +#endif /* GL_NV_conservative_raster_dilate */ + +#ifndef GL_NV_conservative_raster_pre_snap +#define GL_NV_conservative_raster_pre_snap 1 +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550 +#endif /* GL_NV_conservative_raster_pre_snap */ + +#ifndef GL_NV_conservative_raster_pre_snap_triangles +#define GL_NV_conservative_raster_pre_snap_triangles 1 +#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D +#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F + typedef void(APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC)(GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glConservativeRasterParameteriNV(GLenum pname, GLint param); +#endif +#endif /* GL_NV_conservative_raster_pre_snap_triangles */ + +#ifndef GL_NV_conservative_raster_underestimation +#define GL_NV_conservative_raster_underestimation 1 +#endif /* GL_NV_conservative_raster_underestimation */ + +#ifndef GL_NV_depth_buffer_float +#define GL_NV_depth_buffer_float 1 +#define GL_DEPTH_COMPONENT32F_NV 0x8DAB +#define GL_DEPTH32F_STENCIL8_NV 0x8DAC +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD +#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF + typedef void(APIENTRYP PFNGLDEPTHRANGEDNVPROC)(GLdouble zNear, GLdouble zFar); + typedef void(APIENTRYP PFNGLCLEARDEPTHDNVPROC)(GLdouble depth); + typedef void(APIENTRYP PFNGLDEPTHBOUNDSDNVPROC)(GLdouble zmin, GLdouble zmax); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDepthRangedNV(GLdouble zNear, GLdouble zFar); + GLAPI void APIENTRY glClearDepthdNV(GLdouble depth); + GLAPI void APIENTRY glDepthBoundsdNV(GLdouble zmin, GLdouble zmax); +#endif +#endif /* GL_NV_depth_buffer_float */ + +#ifndef GL_NV_draw_vulkan_image +#define GL_NV_draw_vulkan_image 1 + typedef void(APIENTRY* GLVULKANPROCNV)(void); + typedef void(APIENTRYP PFNGLDRAWVKIMAGENVPROC)( + GLuint64 vkImage, + GLuint sampler, + GLfloat x0, + GLfloat y0, + GLfloat x1, + GLfloat y1, + GLfloat z, + GLfloat s0, + GLfloat t0, + GLfloat s1, + GLfloat t1 + ); + typedef GLVULKANPROCNV(APIENTRYP PFNGLGETVKPROCADDRNVPROC)(const GLchar* name); + typedef void(APIENTRYP PFNGLWAITVKSEMAPHORENVPROC)(GLuint64 vkSemaphore); + typedef void(APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC)(GLuint64 vkSemaphore); + typedef void(APIENTRYP PFNGLSIGNALVKFENCENVPROC)(GLuint64 vkFence); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawVkImageNV( + GLuint64 vkImage, + GLuint sampler, + GLfloat x0, + GLfloat y0, + GLfloat x1, + GLfloat y1, + GLfloat z, + GLfloat s0, + GLfloat t0, + GLfloat s1, + GLfloat t1 + ); + GLAPI GLVULKANPROCNV APIENTRY glGetVkProcAddrNV(const GLchar* name); + GLAPI void APIENTRY glWaitVkSemaphoreNV(GLuint64 vkSemaphore); + GLAPI void APIENTRY glSignalVkSemaphoreNV(GLuint64 vkSemaphore); + GLAPI void APIENTRY glSignalVkFenceNV(GLuint64 vkFence); +#endif +#endif /* GL_NV_draw_vulkan_image */ + +#ifndef GL_NV_fill_rectangle +#define GL_NV_fill_rectangle 1 +#define GL_FILL_RECTANGLE_NV 0x933C +#endif /* GL_NV_fill_rectangle */ + +#ifndef GL_NV_fragment_coverage_to_color +#define GL_NV_fragment_coverage_to_color 1 +#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD +#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE + typedef void(APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC)(GLuint color); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFragmentCoverageColorNV(GLuint color); +#endif +#endif /* GL_NV_fragment_coverage_to_color */ + +#ifndef GL_NV_fragment_shader_barycentric +#define GL_NV_fragment_shader_barycentric 1 +#endif /* GL_NV_fragment_shader_barycentric */ + +#ifndef GL_NV_fragment_shader_interlock +#define GL_NV_fragment_shader_interlock 1 +#endif /* GL_NV_fragment_shader_interlock */ + +#ifndef GL_NV_framebuffer_mixed_samples +#define GL_NV_framebuffer_mixed_samples 1 +#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331 +#define GL_COLOR_SAMPLES_NV 0x8E20 +#define GL_DEPTH_SAMPLES_NV 0x932D +#define GL_STENCIL_SAMPLES_NV 0x932E +#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F +#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330 +#define GL_COVERAGE_MODULATION_NV 0x9332 +#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 + typedef void(APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC)(GLsizei n, const GLfloat* v); + typedef void(APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC)(GLsizei bufSize, GLfloat* v); + typedef void(APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC)(GLenum components); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glCoverageModulationTableNV(GLsizei n, const GLfloat* v); + GLAPI void APIENTRY glGetCoverageModulationTableNV(GLsizei bufSize, GLfloat* v); + GLAPI void APIENTRY glCoverageModulationNV(GLenum components); +#endif +#endif /* GL_NV_framebuffer_mixed_samples */ + +#ifndef GL_NV_framebuffer_multisample_coverage +#define GL_NV_framebuffer_multisample_coverage 1 +#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB +#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 +#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 +#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 + typedef void(APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)( + GLenum target, + GLsizei coverageSamples, + GLsizei colorSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV( + GLenum target, + GLsizei coverageSamples, + GLsizei colorSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); +#endif +#endif /* GL_NV_framebuffer_multisample_coverage */ + +#ifndef GL_NV_geometry_shader_passthrough +#define GL_NV_geometry_shader_passthrough 1 +#endif /* GL_NV_geometry_shader_passthrough */ + +#ifndef GL_NV_gpu_shader5 +#define GL_NV_gpu_shader5 1 + typedef khronos_int64_t GLint64EXT; +#define GL_INT64_NV 0x140E +#define GL_UNSIGNED_INT64_NV 0x140F +#define GL_INT8_NV 0x8FE0 +#define GL_INT8_VEC2_NV 0x8FE1 +#define GL_INT8_VEC3_NV 0x8FE2 +#define GL_INT8_VEC4_NV 0x8FE3 +#define GL_INT16_NV 0x8FE4 +#define GL_INT16_VEC2_NV 0x8FE5 +#define GL_INT16_VEC3_NV 0x8FE6 +#define GL_INT16_VEC4_NV 0x8FE7 +#define GL_INT64_VEC2_NV 0x8FE9 +#define GL_INT64_VEC3_NV 0x8FEA +#define GL_INT64_VEC4_NV 0x8FEB +#define GL_UNSIGNED_INT8_NV 0x8FEC +#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED +#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE +#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF +#define GL_UNSIGNED_INT16_NV 0x8FF0 +#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 +#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 +#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 +#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 +#define GL_FLOAT16_NV 0x8FF8 +#define GL_FLOAT16_VEC2_NV 0x8FF9 +#define GL_FLOAT16_VEC3_NV 0x8FFA +#define GL_FLOAT16_VEC4_NV 0x8FFB + typedef void(APIENTRYP PFNGLUNIFORM1I64NVPROC)(GLint location, GLint64EXT x); + typedef void(APIENTRYP PFNGLUNIFORM2I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y); + typedef void(APIENTRYP PFNGLUNIFORM3I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); + typedef void(APIENTRYP + PFNGLUNIFORM4I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); + typedef void(APIENTRYP PFNGLUNIFORM1I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT* value); + typedef void(APIENTRYP PFNGLUNIFORM2I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT* value); + typedef void(APIENTRYP PFNGLUNIFORM3I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT* value); + typedef void(APIENTRYP PFNGLUNIFORM4I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT* value); + typedef void(APIENTRYP PFNGLUNIFORM1UI64NVPROC)(GLint location, GLuint64EXT x); + typedef void(APIENTRYP PFNGLUNIFORM2UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y); + typedef void(APIENTRYP PFNGLUNIFORM3UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + typedef void(APIENTRYP PFNGLUNIFORM4UI64NVPROC)( + GLint location, + GLuint64EXT x, + GLuint64EXT y, + GLuint64EXT z, + GLuint64EXT w + ); + typedef void(APIENTRYP PFNGLUNIFORM1UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT* value); + typedef void(APIENTRYP PFNGLUNIFORM2UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT* value); + typedef void(APIENTRYP PFNGLUNIFORM3UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT* value); + typedef void(APIENTRYP PFNGLUNIFORM4UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT* value); + typedef void(APIENTRYP PFNGLGETUNIFORMI64VNVPROC)(GLuint program, GLint location, GLint64EXT* params); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC)(GLuint program, GLint location, GLint64EXT x); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC)( + GLuint program, + GLint location, + GLint64EXT x, + GLint64EXT y, + GLint64EXT z + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC)( + GLuint program, + GLint location, + GLint64EXT x, + GLint64EXT y, + GLint64EXT z, + GLint64EXT w + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64EXT* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64EXT* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64EXT* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64EXT* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM2UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC)( + GLuint program, + GLint location, + GLuint64EXT x, + GLuint64EXT y, + GLuint64EXT z + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC)( + GLuint program, + GLint location, + GLuint64EXT x, + GLuint64EXT y, + GLuint64EXT z, + GLuint64EXT w + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64EXT* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64EXT* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64EXT* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64EXT* value + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glUniform1i64NV(GLint location, GLint64EXT x); + GLAPI void APIENTRY glUniform2i64NV(GLint location, GLint64EXT x, GLint64EXT y); + GLAPI void APIENTRY glUniform3i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); + GLAPI void APIENTRY glUniform4i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); + GLAPI void APIENTRY glUniform1i64vNV(GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glUniform2i64vNV(GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glUniform3i64vNV(GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glUniform4i64vNV(GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glUniform1ui64NV(GLint location, GLuint64EXT x); + GLAPI void APIENTRY glUniform2ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y); + GLAPI void APIENTRY glUniform3ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + GLAPI void APIENTRY glUniform4ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); + GLAPI void APIENTRY glUniform1ui64vNV(GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY glUniform2ui64vNV(GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY glUniform3ui64vNV(GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY glUniform4ui64vNV(GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY glGetUniformi64vNV(GLuint program, GLint location, GLint64EXT* params); + GLAPI void APIENTRY glProgramUniform1i64NV(GLuint program, GLint location, GLint64EXT x); + GLAPI void APIENTRY glProgramUniform2i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y); + GLAPI void APIENTRY + glProgramUniform3i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); + GLAPI void APIENTRY + glProgramUniform4i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); + GLAPI void APIENTRY glProgramUniform1i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glProgramUniform2i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glProgramUniform3i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glProgramUniform4i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glProgramUniform1ui64NV(GLuint program, GLint location, GLuint64EXT x); + GLAPI void APIENTRY glProgramUniform2ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); + GLAPI void APIENTRY + glProgramUniform3ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + GLAPI void APIENTRY + glProgramUniform4ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); + GLAPI void APIENTRY + glProgramUniform1ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY + glProgramUniform2ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY + glProgramUniform3ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY + glProgramUniform4ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +#endif +#endif /* GL_NV_gpu_shader5 */ + +#ifndef GL_NV_internalformat_sample_query +#define GL_NV_internalformat_sample_query 1 +#define GL_MULTISAMPLES_NV 0x9371 +#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372 +#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373 +#define GL_CONFORMANT_NV 0x9374 + typedef void(APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)( + GLenum target, + GLenum internalformat, + GLsizei samples, + GLenum pname, + GLsizei count, + GLint* params + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGetInternalformatSampleivNV( + GLenum target, + GLenum internalformat, + GLsizei samples, + GLenum pname, + GLsizei count, + GLint* params + ); +#endif +#endif /* GL_NV_internalformat_sample_query */ + +#ifndef GL_NV_memory_attachment +#define GL_NV_memory_attachment 1 +#define GL_ATTACHED_MEMORY_OBJECT_NV 0x95A4 +#define GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5 +#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6 +#define GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7 +#define GL_MEMORY_ATTACHABLE_NV 0x95A8 +#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9 +#define GL_DETACHED_TEXTURES_NV 0x95AA +#define GL_DETACHED_BUFFERS_NV 0x95AB +#define GL_MAX_DETACHED_TEXTURES_NV 0x95AC +#define GL_MAX_DETACHED_BUFFERS_NV 0x95AD + typedef void(APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC)( + GLuint memory, + GLenum pname, + GLint first, + GLsizei count, + GLuint* params + ); + typedef void(APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC)(GLuint memory, GLenum pname); + typedef void(APIENTRYP PFNGLTEXATTACHMEMORYNVPROC)(GLenum target, GLuint memory, GLuint64 offset); + typedef void(APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC)(GLenum target, GLuint memory, GLuint64 offset); + typedef void(APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC)(GLuint texture, GLuint memory, GLuint64 offset); + typedef void(APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC)(GLuint buffer, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glGetMemoryObjectDetachedResourcesuivNV(GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint* params); + GLAPI void APIENTRY glResetMemoryObjectParameterNV(GLuint memory, GLenum pname); + GLAPI void APIENTRY glTexAttachMemoryNV(GLenum target, GLuint memory, GLuint64 offset); + GLAPI void APIENTRY glBufferAttachMemoryNV(GLenum target, GLuint memory, GLuint64 offset); + GLAPI void APIENTRY glTextureAttachMemoryNV(GLuint texture, GLuint memory, GLuint64 offset); + GLAPI void APIENTRY glNamedBufferAttachMemoryNV(GLuint buffer, GLuint memory, GLuint64 offset); +#endif +#endif /* GL_NV_memory_attachment */ + +#ifndef GL_NV_memory_object_sparse +#define GL_NV_memory_object_sparse 1 + typedef void(APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC)( + GLenum target, + GLintptr offset, + GLsizeiptr size, + GLuint memory, + GLuint64 memOffset, + GLboolean commit + ); + typedef void(APIENTRYP PFNGLTEXPAGECOMMITMENTMEMNVPROC)( + GLenum target, + GLint layer, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLuint memory, + GLuint64 offset, + GLboolean commit + ); + typedef void(APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC)( + GLuint buffer, + GLintptr offset, + GLsizeiptr size, + GLuint memory, + GLuint64 memOffset, + GLboolean commit + ); + typedef void(APIENTRYP PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC)( + GLuint texture, + GLint layer, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLuint memory, + GLuint64 offset, + GLboolean commit + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBufferPageCommitmentMemNV( + GLenum target, + GLintptr offset, + GLsizeiptr size, + GLuint memory, + GLuint64 memOffset, + GLboolean commit + ); + GLAPI void APIENTRY glTexPageCommitmentMemNV( + GLenum target, + GLint layer, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLuint memory, + GLuint64 offset, + GLboolean commit + ); + GLAPI void APIENTRY glNamedBufferPageCommitmentMemNV( + GLuint buffer, + GLintptr offset, + GLsizeiptr size, + GLuint memory, + GLuint64 memOffset, + GLboolean commit + ); + GLAPI void APIENTRY glTexturePageCommitmentMemNV( + GLuint texture, + GLint layer, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLuint memory, + GLuint64 offset, + GLboolean commit + ); +#endif +#endif /* GL_NV_memory_object_sparse */ + +#ifndef GL_NV_mesh_shader +#define GL_NV_mesh_shader 1 +#define GL_MESH_SHADER_NV 0x9559 +#define GL_TASK_SHADER_NV 0x955A +#define GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60 +#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61 +#define GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62 +#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63 +#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64 +#define GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65 +#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66 +#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67 +#define GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68 +#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69 +#define GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A +#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B +#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C +#define GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D +#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E +#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F +#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2 +#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3 +#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536 +#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537 +#define GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538 +#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539 +#define GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A +#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D +#define GL_MAX_MESH_VIEWS_NV 0x9557 +#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF +#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543 +#define GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B +#define GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C +#define GL_MESH_WORK_GROUP_SIZE_NV 0x953E +#define GL_TASK_WORK_GROUP_SIZE_NV 0x953F +#define GL_MESH_VERTICES_OUT_NV 0x9579 +#define GL_MESH_PRIMITIVES_OUT_NV 0x957A +#define GL_MESH_OUTPUT_TYPE_NV 0x957B +#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D +#define GL_REFERENCED_BY_MESH_SHADER_NV 0x95A0 +#define GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1 +#define GL_MESH_SHADER_BIT_NV 0x00000040 +#define GL_TASK_SHADER_BIT_NV 0x00000080 +#define GL_MESH_SUBROUTINE_NV 0x957C +#define GL_TASK_SUBROUTINE_NV 0x957D +#define GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E +#define GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F + typedef void(APIENTRYP PFNGLDRAWMESHTASKSNVPROC)(GLuint first, GLuint count); + typedef void(APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect); + typedef void(APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect, GLsizei drawcount, GLsizei stride); + typedef void(APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC)( + GLintptr indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawMeshTasksNV(GLuint first, GLuint count); + GLAPI void APIENTRY glDrawMeshTasksIndirectNV(GLintptr indirect); + GLAPI void APIENTRY glMultiDrawMeshTasksIndirectNV(GLintptr indirect, GLsizei drawcount, GLsizei stride); + GLAPI void APIENTRY + glMultiDrawMeshTasksIndirectCountNV(GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_NV_mesh_shader */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +#define GL_PATH_FORMAT_SVG_NV 0x9070 +#define GL_PATH_FORMAT_PS_NV 0x9071 +#define GL_STANDARD_FONT_NAME_NV 0x9072 +#define GL_SYSTEM_FONT_NAME_NV 0x9073 +#define GL_FILE_NAME_NV 0x9074 +#define GL_PATH_STROKE_WIDTH_NV 0x9075 +#define GL_PATH_END_CAPS_NV 0x9076 +#define GL_PATH_INITIAL_END_CAP_NV 0x9077 +#define GL_PATH_TERMINAL_END_CAP_NV 0x9078 +#define GL_PATH_JOIN_STYLE_NV 0x9079 +#define GL_PATH_MITER_LIMIT_NV 0x907A +#define GL_PATH_DASH_CAPS_NV 0x907B +#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C +#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D +#define GL_PATH_DASH_OFFSET_NV 0x907E +#define GL_PATH_CLIENT_LENGTH_NV 0x907F +#define GL_PATH_FILL_MODE_NV 0x9080 +#define GL_PATH_FILL_MASK_NV 0x9081 +#define GL_PATH_FILL_COVER_MODE_NV 0x9082 +#define GL_PATH_STROKE_COVER_MODE_NV 0x9083 +#define GL_PATH_STROKE_MASK_NV 0x9084 +#define GL_COUNT_UP_NV 0x9088 +#define GL_COUNT_DOWN_NV 0x9089 +#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A +#define GL_CONVEX_HULL_NV 0x908B +#define GL_BOUNDING_BOX_NV 0x908D +#define GL_TRANSLATE_X_NV 0x908E +#define GL_TRANSLATE_Y_NV 0x908F +#define GL_TRANSLATE_2D_NV 0x9090 +#define GL_TRANSLATE_3D_NV 0x9091 +#define GL_AFFINE_2D_NV 0x9092 +#define GL_AFFINE_3D_NV 0x9094 +#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 +#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 +#define GL_UTF8_NV 0x909A +#define GL_UTF16_NV 0x909B +#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C +#define GL_PATH_COMMAND_COUNT_NV 0x909D +#define GL_PATH_COORD_COUNT_NV 0x909E +#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F +#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 +#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 +#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 +#define GL_SQUARE_NV 0x90A3 +#define GL_ROUND_NV 0x90A4 +#define GL_TRIANGULAR_NV 0x90A5 +#define GL_BEVEL_NV 0x90A6 +#define GL_MITER_REVERT_NV 0x90A7 +#define GL_MITER_TRUNCATE_NV 0x90A8 +#define GL_SKIP_MISSING_GLYPH_NV 0x90A9 +#define GL_USE_MISSING_GLYPH_NV 0x90AA +#define GL_PATH_ERROR_POSITION_NV 0x90AB +#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD +#define GL_ADJACENT_PAIRS_NV 0x90AE +#define GL_FIRST_TO_REST_NV 0x90AF +#define GL_PATH_GEN_MODE_NV 0x90B0 +#define GL_PATH_GEN_COEFF_NV 0x90B1 +#define GL_PATH_GEN_COMPONENTS_NV 0x90B3 +#define GL_PATH_STENCIL_FUNC_NV 0x90B7 +#define GL_PATH_STENCIL_REF_NV 0x90B8 +#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 +#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD +#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE +#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF +#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#define GL_CLOSE_PATH_NV 0x00 +#define GL_MOVE_TO_NV 0x02 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_LINE_TO_NV 0x04 +#define GL_RELATIVE_LINE_TO_NV 0x05 +#define GL_HORIZONTAL_LINE_TO_NV 0x06 +#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 +#define GL_VERTICAL_LINE_TO_NV 0x08 +#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 +#define GL_QUADRATIC_CURVE_TO_NV 0x0A +#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B +#define GL_CUBIC_CURVE_TO_NV 0x0C +#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D +#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E +#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F +#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 +#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 +#define GL_SMALL_CCW_ARC_TO_NV 0x12 +#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 +#define GL_SMALL_CW_ARC_TO_NV 0x14 +#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 +#define GL_LARGE_CCW_ARC_TO_NV 0x16 +#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 +#define GL_LARGE_CW_ARC_TO_NV 0x18 +#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 +#define GL_RESTART_PATH_NV 0xF0 +#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 +#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 +#define GL_RECT_NV 0xF6 +#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 +#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA +#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC +#define GL_ARC_TO_NV 0xFE +#define GL_RELATIVE_ARC_TO_NV 0xFF +#define GL_BOLD_BIT_NV 0x01 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 +#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 +#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 +#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 +#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100 +#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000 +#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000 +#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000 +#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000 +#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000 +#define GL_FONT_ASCENDER_BIT_NV 0x00200000 +#define GL_FONT_DESCENDER_BIT_NV 0x00400000 +#define GL_FONT_HEIGHT_BIT_NV 0x00800000 +#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000 +#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000 +#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000 +#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000 +#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000 +#define GL_ROUNDED_RECT_NV 0xE8 +#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9 +#define GL_ROUNDED_RECT2_NV 0xEA +#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB +#define GL_ROUNDED_RECT4_NV 0xEC +#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED +#define GL_ROUNDED_RECT8_NV 0xEE +#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF +#define GL_RELATIVE_RECT_NV 0xF7 +#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368 +#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369 +#define GL_FONT_UNAVAILABLE_NV 0x936A +#define GL_FONT_UNINTELLIGIBLE_NV 0x936B +#define GL_CONIC_CURVE_TO_NV 0x1A +#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B +#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000 +#define GL_STANDARD_FONT_FORMAT_NV 0x936C +#define GL_PATH_PROJECTION_NV 0x1701 +#define GL_PATH_MODELVIEW_NV 0x1700 +#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3 +#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6 +#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36 +#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3 +#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4 +#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7 +#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38 +#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4 +#define GL_FRAGMENT_INPUT_NV 0x936D + typedef GLuint(APIENTRYP PFNGLGENPATHSNVPROC)(GLsizei range); + typedef void(APIENTRYP PFNGLDELETEPATHSNVPROC)(GLuint path, GLsizei range); + typedef GLboolean(APIENTRYP PFNGLISPATHNVPROC)(GLuint path); + typedef void(APIENTRYP PFNGLPATHCOMMANDSNVPROC)( + GLuint path, + GLsizei numCommands, + const GLubyte* commands, + GLsizei numCoords, + GLenum coordType, + const void* coords + ); + typedef void(APIENTRYP PFNGLPATHCOORDSNVPROC)(GLuint path, GLsizei numCoords, GLenum coordType, const void* coords); + typedef void(APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC)( + GLuint path, + GLsizei commandStart, + GLsizei commandsToDelete, + GLsizei numCommands, + const GLubyte* commands, + GLsizei numCoords, + GLenum coordType, + const void* coords + ); + typedef void(APIENTRYP PFNGLPATHSUBCOORDSNVPROC)( + GLuint path, + GLsizei coordStart, + GLsizei numCoords, + GLenum coordType, + const void* coords + ); + typedef void(APIENTRYP PFNGLPATHSTRINGNVPROC)(GLuint path, GLenum format, GLsizei length, const void* pathString); + typedef void(APIENTRYP PFNGLPATHGLYPHSNVPROC)( + GLuint firstPathName, + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLsizei numGlyphs, + GLenum type, + const void* charcodes, + GLenum handleMissingGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + typedef void(APIENTRYP PFNGLPATHGLYPHRANGENVPROC)( + GLuint firstPathName, + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLuint firstGlyph, + GLsizei numGlyphs, + GLenum handleMissingGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + typedef void(APIENTRYP PFNGLWEIGHTPATHSNVPROC)( + GLuint resultPath, + GLsizei numPaths, + const GLuint* paths, + const GLfloat* weights + ); + typedef void(APIENTRYP PFNGLCOPYPATHNVPROC)(GLuint resultPath, GLuint srcPath); + typedef void(APIENTRYP PFNGLINTERPOLATEPATHSNVPROC)(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); + typedef void(APIENTRYP PFNGLTRANSFORMPATHNVPROC)( + GLuint resultPath, + GLuint srcPath, + GLenum transformType, + const GLfloat* transformValues + ); + typedef void(APIENTRYP PFNGLPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, const GLint* value); + typedef void(APIENTRYP PFNGLPATHPARAMETERINVPROC)(GLuint path, GLenum pname, GLint value); + typedef void(APIENTRYP PFNGLPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, const GLfloat* value); + typedef void(APIENTRYP PFNGLPATHPARAMETERFNVPROC)(GLuint path, GLenum pname, GLfloat value); + typedef void(APIENTRYP PFNGLPATHDASHARRAYNVPROC)(GLuint path, GLsizei dashCount, const GLfloat* dashArray); + typedef void(APIENTRYP PFNGLPATHSTENCILFUNCNVPROC)(GLenum func, GLint ref, GLuint mask); + typedef void(APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC)(GLfloat factor, GLfloat units); + typedef void(APIENTRYP PFNGLSTENCILFILLPATHNVPROC)(GLuint path, GLenum fillMode, GLuint mask); + typedef void(APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC)(GLuint path, GLint reference, GLuint mask); + typedef void(APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC)( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum fillMode, + GLuint mask, + GLenum transformType, + const GLfloat* transformValues + ); + typedef void(APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLint reference, + GLuint mask, + GLenum transformType, + const GLfloat* transformValues + ); + typedef void(APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC)(GLenum func); + typedef void(APIENTRYP PFNGLCOVERFILLPATHNVPROC)(GLuint path, GLenum coverMode); + typedef void(APIENTRYP PFNGLCOVERSTROKEPATHNVPROC)(GLuint path, GLenum coverMode); + typedef void(APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC)( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + typedef void(APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + typedef void(APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, GLint* value); + typedef void(APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, GLfloat* value); + typedef void(APIENTRYP PFNGLGETPATHCOMMANDSNVPROC)(GLuint path, GLubyte* commands); + typedef void(APIENTRYP PFNGLGETPATHCOORDSNVPROC)(GLuint path, GLfloat* coords); + typedef void(APIENTRYP PFNGLGETPATHDASHARRAYNVPROC)(GLuint path, GLfloat* dashArray); + typedef void(APIENTRYP PFNGLGETPATHMETRICSNVPROC)( + GLbitfield metricQueryMask, + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLsizei stride, + GLfloat* metrics + ); + typedef void(APIENTRYP PFNGLGETPATHMETRICRANGENVPROC)( + GLbitfield metricQueryMask, + GLuint firstPathName, + GLsizei numPaths, + GLsizei stride, + GLfloat* metrics + ); + typedef void(APIENTRYP PFNGLGETPATHSPACINGNVPROC)( + GLenum pathListMode, + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLfloat advanceScale, + GLfloat kerningScale, + GLenum transformType, + GLfloat* returnedSpacing + ); + typedef GLboolean(APIENTRYP PFNGLISPOINTINFILLPATHNVPROC)(GLuint path, GLuint mask, GLfloat x, GLfloat y); + typedef GLboolean(APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC)(GLuint path, GLfloat x, GLfloat y); + typedef GLfloat(APIENTRYP PFNGLGETPATHLENGTHNVPROC)(GLuint path, GLsizei startSegment, GLsizei numSegments); + typedef GLboolean(APIENTRYP PFNGLPOINTALONGPATHNVPROC)( + GLuint path, + GLsizei startSegment, + GLsizei numSegments, + GLfloat distance, + GLfloat* x, + GLfloat* y, + GLfloat* tangentX, + GLfloat* tangentY + ); + typedef void(APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC)(GLenum matrixMode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC)(GLenum matrixMode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXMULT3X2FNVPROC)(GLenum matrixMode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXMULT3X3FNVPROC)(GLenum matrixMode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat* m); + typedef void(APIENTRYP + PFNGLSTENCILTHENCOVERFILLPATHNVPROC)(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); + typedef void(APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)( + GLuint path, + GLint reference, + GLuint mask, + GLenum coverMode + ); + typedef void(APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum fillMode, + GLuint mask, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + typedef void(APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLint reference, + GLuint mask, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + typedef GLenum(APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC)( + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLuint pathParameterTemplate, + GLfloat emScale, + GLuint* baseAndCount + ); + typedef GLenum(APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC)( + GLuint firstPathName, + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLuint firstGlyphIndex, + GLsizei numGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + typedef GLenum(APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)( + GLuint firstPathName, + GLenum fontTarget, + GLsizeiptr fontSize, + const void* fontData, + GLsizei faceIndex, + GLuint firstGlyphIndex, + GLsizei numGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + typedef void(APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)( + GLuint program, + GLint location, + GLenum genMode, + GLint components, + const GLfloat* coeffs + ); + typedef void(APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC)( + GLuint program, + GLenum programInterface, + GLuint index, + GLsizei propCount, + const GLenum* props, + GLsizei count, + GLsizei* length, + GLfloat* params + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLuint APIENTRY glGenPathsNV(GLsizei range); + GLAPI void APIENTRY glDeletePathsNV(GLuint path, GLsizei range); + GLAPI GLboolean APIENTRY glIsPathNV(GLuint path); + GLAPI void APIENTRY glPathCommandsNV( + GLuint path, + GLsizei numCommands, + const GLubyte* commands, + GLsizei numCoords, + GLenum coordType, + const void* coords + ); + GLAPI void APIENTRY glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const void* coords); + GLAPI void APIENTRY glPathSubCommandsNV( + GLuint path, + GLsizei commandStart, + GLsizei commandsToDelete, + GLsizei numCommands, + const GLubyte* commands, + GLsizei numCoords, + GLenum coordType, + const void* coords + ); + GLAPI void APIENTRY + glPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void* coords); + GLAPI void APIENTRY glPathStringNV(GLuint path, GLenum format, GLsizei length, const void* pathString); + GLAPI void APIENTRY glPathGlyphsNV( + GLuint firstPathName, + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLsizei numGlyphs, + GLenum type, + const void* charcodes, + GLenum handleMissingGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + GLAPI void APIENTRY glPathGlyphRangeNV( + GLuint firstPathName, + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLuint firstGlyph, + GLsizei numGlyphs, + GLenum handleMissingGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + GLAPI void APIENTRY + glWeightPathsNV(GLuint resultPath, GLsizei numPaths, const GLuint* paths, const GLfloat* weights); + GLAPI void APIENTRY glCopyPathNV(GLuint resultPath, GLuint srcPath); + GLAPI void APIENTRY glInterpolatePathsNV(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); + GLAPI void APIENTRY + glTransformPathNV(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat* transformValues); + GLAPI void APIENTRY glPathParameterivNV(GLuint path, GLenum pname, const GLint* value); + GLAPI void APIENTRY glPathParameteriNV(GLuint path, GLenum pname, GLint value); + GLAPI void APIENTRY glPathParameterfvNV(GLuint path, GLenum pname, const GLfloat* value); + GLAPI void APIENTRY glPathParameterfNV(GLuint path, GLenum pname, GLfloat value); + GLAPI void APIENTRY glPathDashArrayNV(GLuint path, GLsizei dashCount, const GLfloat* dashArray); + GLAPI void APIENTRY glPathStencilFuncNV(GLenum func, GLint ref, GLuint mask); + GLAPI void APIENTRY glPathStencilDepthOffsetNV(GLfloat factor, GLfloat units); + GLAPI void APIENTRY glStencilFillPathNV(GLuint path, GLenum fillMode, GLuint mask); + GLAPI void APIENTRY glStencilStrokePathNV(GLuint path, GLint reference, GLuint mask); + GLAPI void APIENTRY glStencilFillPathInstancedNV( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum fillMode, + GLuint mask, + GLenum transformType, + const GLfloat* transformValues + ); + GLAPI void APIENTRY glStencilStrokePathInstancedNV( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLint reference, + GLuint mask, + GLenum transformType, + const GLfloat* transformValues + ); + GLAPI void APIENTRY glPathCoverDepthFuncNV(GLenum func); + GLAPI void APIENTRY glCoverFillPathNV(GLuint path, GLenum coverMode); + GLAPI void APIENTRY glCoverStrokePathNV(GLuint path, GLenum coverMode); + GLAPI void APIENTRY glCoverFillPathInstancedNV( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + GLAPI void APIENTRY glCoverStrokePathInstancedNV( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + GLAPI void APIENTRY glGetPathParameterivNV(GLuint path, GLenum pname, GLint* value); + GLAPI void APIENTRY glGetPathParameterfvNV(GLuint path, GLenum pname, GLfloat* value); + GLAPI void APIENTRY glGetPathCommandsNV(GLuint path, GLubyte* commands); + GLAPI void APIENTRY glGetPathCoordsNV(GLuint path, GLfloat* coords); + GLAPI void APIENTRY glGetPathDashArrayNV(GLuint path, GLfloat* dashArray); + GLAPI void APIENTRY glGetPathMetricsNV( + GLbitfield metricQueryMask, + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLsizei stride, + GLfloat* metrics + ); + GLAPI void APIENTRY glGetPathMetricRangeNV( + GLbitfield metricQueryMask, + GLuint firstPathName, + GLsizei numPaths, + GLsizei stride, + GLfloat* metrics + ); + GLAPI void APIENTRY glGetPathSpacingNV( + GLenum pathListMode, + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLfloat advanceScale, + GLfloat kerningScale, + GLenum transformType, + GLfloat* returnedSpacing + ); + GLAPI GLboolean APIENTRY glIsPointInFillPathNV(GLuint path, GLuint mask, GLfloat x, GLfloat y); + GLAPI GLboolean APIENTRY glIsPointInStrokePathNV(GLuint path, GLfloat x, GLfloat y); + GLAPI GLfloat APIENTRY glGetPathLengthNV(GLuint path, GLsizei startSegment, GLsizei numSegments); + GLAPI GLboolean APIENTRY glPointAlongPathNV( + GLuint path, + GLsizei startSegment, + GLsizei numSegments, + GLfloat distance, + GLfloat* x, + GLfloat* y, + GLfloat* tangentX, + GLfloat* tangentY + ); + GLAPI void APIENTRY glMatrixLoad3x2fNV(GLenum matrixMode, const GLfloat* m); + GLAPI void APIENTRY glMatrixLoad3x3fNV(GLenum matrixMode, const GLfloat* m); + GLAPI void APIENTRY glMatrixLoadTranspose3x3fNV(GLenum matrixMode, const GLfloat* m); + GLAPI void APIENTRY glMatrixMult3x2fNV(GLenum matrixMode, const GLfloat* m); + GLAPI void APIENTRY glMatrixMult3x3fNV(GLenum matrixMode, const GLfloat* m); + GLAPI void APIENTRY glMatrixMultTranspose3x3fNV(GLenum matrixMode, const GLfloat* m); + GLAPI void APIENTRY glStencilThenCoverFillPathNV(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); + GLAPI void APIENTRY glStencilThenCoverStrokePathNV(GLuint path, GLint reference, GLuint mask, GLenum coverMode); + GLAPI void APIENTRY glStencilThenCoverFillPathInstancedNV( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum fillMode, + GLuint mask, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + GLAPI void APIENTRY glStencilThenCoverStrokePathInstancedNV( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLint reference, + GLuint mask, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + GLAPI GLenum APIENTRY glPathGlyphIndexRangeNV( + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLuint pathParameterTemplate, + GLfloat emScale, + GLuint* baseAndCount + ); + GLAPI GLenum APIENTRY glPathGlyphIndexArrayNV( + GLuint firstPathName, + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLuint firstGlyphIndex, + GLsizei numGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + GLAPI GLenum APIENTRY glPathMemoryGlyphIndexArrayNV( + GLuint firstPathName, + GLenum fontTarget, + GLsizeiptr fontSize, + const void* fontData, + GLsizei faceIndex, + GLuint firstGlyphIndex, + GLsizei numGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + GLAPI void APIENTRY glProgramPathFragmentInputGenNV( + GLuint program, + GLint location, + GLenum genMode, + GLint components, + const GLfloat* coeffs + ); + GLAPI void APIENTRY glGetProgramResourcefvNV( + GLuint program, + GLenum programInterface, + GLuint index, + GLsizei propCount, + const GLenum* props, + GLsizei count, + GLsizei* length, + GLfloat* params + ); +#endif +#endif /* GL_NV_path_rendering */ + +#ifndef GL_NV_path_rendering_shared_edge +#define GL_NV_path_rendering_shared_edge 1 +#define GL_SHARED_EDGE_NV 0xC0 +#endif /* GL_NV_path_rendering_shared_edge */ + +#ifndef GL_NV_primitive_shading_rate +#define GL_NV_primitive_shading_rate 1 +#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1 +#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2 +#endif /* GL_NV_primitive_shading_rate */ + +#ifndef GL_NV_representative_fragment_test +#define GL_NV_representative_fragment_test 1 +#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F +#endif /* GL_NV_representative_fragment_test */ + +#ifndef GL_NV_sample_locations +#define GL_NV_sample_locations 1 +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340 +#define GL_SAMPLE_LOCATION_NV 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343 + typedef void(APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)( + GLenum target, + GLuint start, + GLsizei count, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)( + GLuint framebuffer, + GLuint start, + GLsizei count, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFramebufferSampleLocationsfvNV(GLenum target, GLuint start, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY + glNamedFramebufferSampleLocationsfvNV(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY glResolveDepthValuesNV(void); +#endif +#endif /* GL_NV_sample_locations */ + +#ifndef GL_NV_sample_mask_override_coverage +#define GL_NV_sample_mask_override_coverage 1 +#endif /* GL_NV_sample_mask_override_coverage */ + +#ifndef GL_NV_scissor_exclusive +#define GL_NV_scissor_exclusive 1 +#define GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555 +#define GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556 + typedef void(APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC)(GLint x, GLint y, GLsizei width, GLsizei height); + typedef void(APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC)(GLuint first, GLsizei count, const GLint* v); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glScissorExclusiveNV(GLint x, GLint y, GLsizei width, GLsizei height); + GLAPI void APIENTRY glScissorExclusiveArrayvNV(GLuint first, GLsizei count, const GLint* v); +#endif +#endif /* GL_NV_scissor_exclusive */ + +#ifndef GL_NV_shader_atomic_counters +#define GL_NV_shader_atomic_counters 1 +#endif /* GL_NV_shader_atomic_counters */ + +#ifndef GL_NV_shader_atomic_float +#define GL_NV_shader_atomic_float 1 +#endif /* GL_NV_shader_atomic_float */ + +#ifndef GL_NV_shader_atomic_float64 +#define GL_NV_shader_atomic_float64 1 +#endif /* GL_NV_shader_atomic_float64 */ + +#ifndef GL_NV_shader_atomic_fp16_vector +#define GL_NV_shader_atomic_fp16_vector 1 +#endif /* GL_NV_shader_atomic_fp16_vector */ + +#ifndef GL_NV_shader_atomic_int64 +#define GL_NV_shader_atomic_int64 1 +#endif /* GL_NV_shader_atomic_int64 */ + +#ifndef GL_NV_shader_buffer_load +#define GL_NV_shader_buffer_load 1 +#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D +#define GL_GPU_ADDRESS_NV 0x8F34 +#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 + typedef void(APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC)(GLenum target, GLenum access); + typedef void(APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC)(GLenum target); + typedef GLboolean(APIENTRYP PFNGLISBUFFERRESIDENTNVPROC)(GLenum target); + typedef void(APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)(GLuint buffer, GLenum access); + typedef void(APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)(GLuint buffer); + typedef GLboolean(APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC)(GLuint buffer); + typedef void(APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC)(GLenum target, GLenum pname, GLuint64EXT* params); + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)(GLuint buffer, GLenum pname, GLuint64EXT* params); + typedef void(APIENTRYP PFNGLGETINTEGERUI64VNVPROC)(GLenum value, GLuint64EXT* result); + typedef void(APIENTRYP PFNGLUNIFORMUI64NVPROC)(GLint location, GLuint64EXT value); + typedef void(APIENTRYP PFNGLUNIFORMUI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT* value); + typedef void(APIENTRYP PFNGLGETUNIFORMUI64VNVPROC)(GLuint program, GLint location, GLuint64EXT* params); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC)(GLuint program, GLint location, GLuint64EXT value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64EXT* value + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMakeBufferResidentNV(GLenum target, GLenum access); + GLAPI void APIENTRY glMakeBufferNonResidentNV(GLenum target); + GLAPI GLboolean APIENTRY glIsBufferResidentNV(GLenum target); + GLAPI void APIENTRY glMakeNamedBufferResidentNV(GLuint buffer, GLenum access); + GLAPI void APIENTRY glMakeNamedBufferNonResidentNV(GLuint buffer); + GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV(GLuint buffer); + GLAPI void APIENTRY glGetBufferParameterui64vNV(GLenum target, GLenum pname, GLuint64EXT* params); + GLAPI void APIENTRY glGetNamedBufferParameterui64vNV(GLuint buffer, GLenum pname, GLuint64EXT* params); + GLAPI void APIENTRY glGetIntegerui64vNV(GLenum value, GLuint64EXT* result); + GLAPI void APIENTRY glUniformui64NV(GLint location, GLuint64EXT value); + GLAPI void APIENTRY glUniformui64vNV(GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY glGetUniformui64vNV(GLuint program, GLint location, GLuint64EXT* params); + GLAPI void APIENTRY glProgramUniformui64NV(GLuint program, GLint location, GLuint64EXT value); + GLAPI void APIENTRY + glProgramUniformui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +#endif +#endif /* GL_NV_shader_buffer_load */ + +#ifndef GL_NV_shader_buffer_store +#define GL_NV_shader_buffer_store 1 +#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010 +#endif /* GL_NV_shader_buffer_store */ + +#ifndef GL_NV_shader_subgroup_partitioned +#define GL_NV_shader_subgroup_partitioned 1 +#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100 +#endif /* GL_NV_shader_subgroup_partitioned */ + +#ifndef GL_NV_shader_texture_footprint +#define GL_NV_shader_texture_footprint 1 +#endif /* GL_NV_shader_texture_footprint */ + +#ifndef GL_NV_shader_thread_group +#define GL_NV_shader_thread_group 1 +#define GL_WARP_SIZE_NV 0x9339 +#define GL_WARPS_PER_SM_NV 0x933A +#define GL_SM_COUNT_NV 0x933B +#endif /* GL_NV_shader_thread_group */ + +#ifndef GL_NV_shader_thread_shuffle +#define GL_NV_shader_thread_shuffle 1 +#endif /* GL_NV_shader_thread_shuffle */ + +#ifndef GL_NV_shading_rate_image +#define GL_NV_shading_rate_image 1 +#define GL_SHADING_RATE_IMAGE_NV 0x9563 +#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564 +#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565 +#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569 +#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A +#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B +#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C +#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D +#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E +#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F +#define GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B +#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C +#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D +#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E +#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F +#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE +#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF +#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0 + typedef void(APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC)(GLuint texture); + typedef void(APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC)(GLuint viewport, GLuint entry, GLenum* rate); + typedef void(APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC)( + GLenum rate, + GLuint samples, + GLuint index, + GLint* location + ); + typedef void(APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC)(GLboolean synchronize); + typedef void(APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC)( + GLuint viewport, + GLuint first, + GLsizei count, + const GLenum* rates + ); + typedef void(APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC)(GLenum order); + typedef void(APIENTRYP + PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC)(GLenum rate, GLuint samples, const GLint* locations); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBindShadingRateImageNV(GLuint texture); + GLAPI void APIENTRY glGetShadingRateImagePaletteNV(GLuint viewport, GLuint entry, GLenum* rate); + GLAPI void APIENTRY glGetShadingRateSampleLocationivNV(GLenum rate, GLuint samples, GLuint index, GLint* location); + GLAPI void APIENTRY glShadingRateImageBarrierNV(GLboolean synchronize); + GLAPI void APIENTRY glShadingRateImagePaletteNV(GLuint viewport, GLuint first, GLsizei count, const GLenum* rates); + GLAPI void APIENTRY glShadingRateSampleOrderNV(GLenum order); + GLAPI void APIENTRY glShadingRateSampleOrderCustomNV(GLenum rate, GLuint samples, const GLint* locations); +#endif +#endif /* GL_NV_shading_rate_image */ + +#ifndef GL_NV_stereo_view_rendering +#define GL_NV_stereo_view_rendering 1 +#endif /* GL_NV_stereo_view_rendering */ + +#ifndef GL_NV_texture_barrier +#define GL_NV_texture_barrier 1 + typedef void(APIENTRYP PFNGLTEXTUREBARRIERNVPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTextureBarrierNV(void); +#endif +#endif /* GL_NV_texture_barrier */ + +#ifndef GL_NV_texture_rectangle_compressed +#define GL_NV_texture_rectangle_compressed 1 +#endif /* GL_NV_texture_rectangle_compressed */ + +#ifndef GL_NV_uniform_buffer_std430_layout +#define GL_NV_uniform_buffer_std430_layout 1 +#endif /* GL_NV_uniform_buffer_std430_layout */ + +#ifndef GL_NV_uniform_buffer_unified_memory +#define GL_NV_uniform_buffer_unified_memory 1 +#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E +#define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F +#define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370 +#endif /* GL_NV_uniform_buffer_unified_memory */ + +#ifndef GL_NV_vertex_attrib_integer_64bit +#define GL_NV_vertex_attrib_integer_64bit 1 + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC)(GLuint index, GLint64EXT x); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC)( + GLuint index, + GLint64EXT x, + GLint64EXT y, + GLint64EXT z, + GLint64EXT w + ); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC)(GLuint index, const GLint64EXT* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC)(GLuint index, const GLint64EXT* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC)(GLuint index, const GLint64EXT* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC)(GLuint index, const GLint64EXT* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC)(GLuint index, GLuint64EXT x); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC)(GLuint index, GLuint64EXT x, GLuint64EXT y); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC)( + GLuint index, + GLuint64EXT x, + GLuint64EXT y, + GLuint64EXT z, + GLuint64EXT w + ); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC)(GLuint index, const GLuint64EXT* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC)(GLuint index, const GLuint64EXT* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC)(GLuint index, const GLuint64EXT* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC)(GLuint index, const GLuint64EXT* v); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC)(GLuint index, GLenum pname, GLint64EXT* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC)(GLuint index, GLenum pname, GLuint64EXT* params); + typedef void(APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC)(GLuint index, GLint size, GLenum type, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glVertexAttribL1i64NV(GLuint index, GLint64EXT x); + GLAPI void APIENTRY glVertexAttribL2i64NV(GLuint index, GLint64EXT x, GLint64EXT y); + GLAPI void APIENTRY glVertexAttribL3i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); + GLAPI void APIENTRY glVertexAttribL4i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); + GLAPI void APIENTRY glVertexAttribL1i64vNV(GLuint index, const GLint64EXT* v); + GLAPI void APIENTRY glVertexAttribL2i64vNV(GLuint index, const GLint64EXT* v); + GLAPI void APIENTRY glVertexAttribL3i64vNV(GLuint index, const GLint64EXT* v); + GLAPI void APIENTRY glVertexAttribL4i64vNV(GLuint index, const GLint64EXT* v); + GLAPI void APIENTRY glVertexAttribL1ui64NV(GLuint index, GLuint64EXT x); + GLAPI void APIENTRY glVertexAttribL2ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y); + GLAPI void APIENTRY glVertexAttribL3ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + GLAPI void APIENTRY + glVertexAttribL4ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); + GLAPI void APIENTRY glVertexAttribL1ui64vNV(GLuint index, const GLuint64EXT* v); + GLAPI void APIENTRY glVertexAttribL2ui64vNV(GLuint index, const GLuint64EXT* v); + GLAPI void APIENTRY glVertexAttribL3ui64vNV(GLuint index, const GLuint64EXT* v); + GLAPI void APIENTRY glVertexAttribL4ui64vNV(GLuint index, const GLuint64EXT* v); + GLAPI void APIENTRY glGetVertexAttribLi64vNV(GLuint index, GLenum pname, GLint64EXT* params); + GLAPI void APIENTRY glGetVertexAttribLui64vNV(GLuint index, GLenum pname, GLuint64EXT* params); + GLAPI void APIENTRY glVertexAttribLFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride); +#endif +#endif /* GL_NV_vertex_attrib_integer_64bit */ + +#ifndef GL_NV_vertex_buffer_unified_memory +#define GL_NV_vertex_buffer_unified_memory 1 +#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E +#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F +#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 +#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 +#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 +#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 +#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 +#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 +#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 +#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 +#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 +#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 +#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A +#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B +#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C +#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D +#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E +#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F +#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 +#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 +#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 +#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 +#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 +#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 +#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 + typedef void(APIENTRYP + PFNGLBUFFERADDRESSRANGENVPROC)(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); + typedef void(APIENTRYP PFNGLVERTEXFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLNORMALFORMATNVPROC)(GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLCOLORFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLINDEXFORMATNVPROC)(GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLTEXCOORDFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLEDGEFLAGFORMATNVPROC)(GLsizei stride); + typedef void(APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLFOGCOORDFORMATNVPROC)(GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC)( + GLuint index, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC)(GLuint index, GLint size, GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC)(GLenum value, GLuint index, GLuint64EXT* result); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBufferAddressRangeNV(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); + GLAPI void APIENTRY glVertexFormatNV(GLint size, GLenum type, GLsizei stride); + GLAPI void APIENTRY glNormalFormatNV(GLenum type, GLsizei stride); + GLAPI void APIENTRY glColorFormatNV(GLint size, GLenum type, GLsizei stride); + GLAPI void APIENTRY glIndexFormatNV(GLenum type, GLsizei stride); + GLAPI void APIENTRY glTexCoordFormatNV(GLint size, GLenum type, GLsizei stride); + GLAPI void APIENTRY glEdgeFlagFormatNV(GLsizei stride); + GLAPI void APIENTRY glSecondaryColorFormatNV(GLint size, GLenum type, GLsizei stride); + GLAPI void APIENTRY glFogCoordFormatNV(GLenum type, GLsizei stride); + GLAPI void APIENTRY + glVertexAttribFormatNV(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); + GLAPI void APIENTRY glVertexAttribIFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride); + GLAPI void APIENTRY glGetIntegerui64i_vNV(GLenum value, GLuint index, GLuint64EXT* result); +#endif +#endif /* GL_NV_vertex_buffer_unified_memory */ + +#ifndef GL_NV_viewport_array2 +#define GL_NV_viewport_array2 1 +#endif /* GL_NV_viewport_array2 */ + +#ifndef GL_NV_viewport_swizzle +#define GL_NV_viewport_swizzle 1 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357 +#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358 +#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359 +#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A +#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B + typedef void(APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC)( + GLuint index, + GLenum swizzlex, + GLenum swizzley, + GLenum swizzlez, + GLenum swizzlew + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glViewportSwizzleNV(GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#endif +#endif /* GL_NV_viewport_swizzle */ + +#ifndef GL_OVR_multiview +#define GL_OVR_multiview 1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632 +#define GL_MAX_VIEWS_OVR 0x9631 +#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633 + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)( + GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint baseViewIndex, + GLsizei numViews + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)( + GLuint framebuffer, + GLenum attachment, + GLuint texture, + GLint level, + GLint baseViewIndex, + GLsizei numViews + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFramebufferTextureMultiviewOVR( + GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint baseViewIndex, + GLsizei numViews + ); + GLAPI void APIENTRY glNamedFramebufferTextureMultiviewOVR( + GLuint framebuffer, + GLenum attachment, + GLuint texture, + GLint level, + GLint baseViewIndex, + GLsizei numViews + ); +#endif +#endif /* GL_OVR_multiview */ + +#ifndef GL_OVR_multiview2 +#define GL_OVR_multiview2 1 +#endif /* GL_OVR_multiview2 */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/mortar/include/mortar/mortar_opengl_glext.h b/mortar/include/mortar/mortar_opengl_glext.h new file mode 100644 index 00000000..5c86cee8 --- /dev/null +++ b/mortar/include/mortar/mortar_opengl_glext.h @@ -0,0 +1,21075 @@ +#ifndef __gl_glext_h_ +#define __gl_glext_h_ 1 + +#ifdef __cplusplus +extern "C" +{ +#endif + + /* + ** Copyright 2013-2025 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 +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY* +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +#define GL_GLEXT_VERSION 20251023 + +#include + + /* Generated C header for: + * API: gl + * Profile: compatibility + * Versions considered: .* + * Versions emitted: 1\.[2-9]|[234]\.[0-9] + * Default extensions included: gl + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_RESCALE_NORMAL 0x803A +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D + typedef void(APIENTRYP PFNGLDRAWRANGEELEMENTSPROC)( + GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices + ); + typedef void(APIENTRYP PFNGLTEXIMAGE3DPROC)( + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXSUBIMAGE3DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void* indices); + GLAPI void APIENTRY glTexImage3D( + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTexSubImage3D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glCopyTexSubImage3D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); +#endif +#endif /* GL_VERSION_1_2 */ + +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +#define GL_MULTISAMPLE_BIT 0x20000000 +#define GL_NORMAL_MAP 0x8511 +#define GL_REFLECTION_MAP 0x8512 +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_RGB 0x8582 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_SUBTRACT 0x84E7 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF + typedef void(APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture); + typedef void(APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void* img); + typedef void(APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC)(GLenum texture); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1DPROC)(GLenum target, GLdouble s); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1DVPROC)(GLenum target, const GLdouble* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1FPROC)(GLenum target, GLfloat s); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1FVPROC)(GLenum target, const GLfloat* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1IPROC)(GLenum target, GLint s); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1IVPROC)(GLenum target, const GLint* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1SPROC)(GLenum target, GLshort s); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1SVPROC)(GLenum target, const GLshort* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2DPROC)(GLenum target, GLdouble s, GLdouble t); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2DVPROC)(GLenum target, const GLdouble* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2FPROC)(GLenum target, GLfloat s, GLfloat t); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2FVPROC)(GLenum target, const GLfloat* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2IPROC)(GLenum target, GLint s, GLint t); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2IVPROC)(GLenum target, const GLint* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2SPROC)(GLenum target, GLshort s, GLshort t); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2SVPROC)(GLenum target, const GLshort* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3DPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3DVPROC)(GLenum target, const GLdouble* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3FPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3FVPROC)(GLenum target, const GLfloat* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3IPROC)(GLenum target, GLint s, GLint t, GLint r); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3IVPROC)(GLenum target, const GLint* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3SPROC)(GLenum target, GLshort s, GLshort t, GLshort r); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3SVPROC)(GLenum target, const GLshort* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4DPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4DVPROC)(GLenum target, const GLdouble* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4FPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4FVPROC)(GLenum target, const GLfloat* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4IPROC)(GLenum target, GLint s, GLint t, GLint r, GLint q); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4IVPROC)(GLenum target, const GLint* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4SPROC)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4SVPROC)(GLenum target, const GLshort* v); + typedef void(APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC)(const GLfloat* m); + typedef void(APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC)(const GLdouble* m); + typedef void(APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC)(const GLfloat* m); + typedef void(APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC)(const GLdouble* m); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glActiveTexture(GLenum texture); + GLAPI void APIENTRY glSampleCoverage(GLfloat value, GLboolean invert); + GLAPI void APIENTRY glCompressedTexImage3D( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTexImage2D( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTexImage1D( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTexSubImage3D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTexSubImage2D( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTexSubImage1D( + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glGetCompressedTexImage(GLenum target, GLint level, void* img); + GLAPI void APIENTRY glClientActiveTexture(GLenum texture); + GLAPI void APIENTRY glMultiTexCoord1d(GLenum target, GLdouble s); + GLAPI void APIENTRY glMultiTexCoord1dv(GLenum target, const GLdouble* v); + GLAPI void APIENTRY glMultiTexCoord1f(GLenum target, GLfloat s); + GLAPI void APIENTRY glMultiTexCoord1fv(GLenum target, const GLfloat* v); + GLAPI void APIENTRY glMultiTexCoord1i(GLenum target, GLint s); + GLAPI void APIENTRY glMultiTexCoord1iv(GLenum target, const GLint* v); + GLAPI void APIENTRY glMultiTexCoord1s(GLenum target, GLshort s); + GLAPI void APIENTRY glMultiTexCoord1sv(GLenum target, const GLshort* v); + GLAPI void APIENTRY glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); + GLAPI void APIENTRY glMultiTexCoord2dv(GLenum target, const GLdouble* v); + GLAPI void APIENTRY glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); + GLAPI void APIENTRY glMultiTexCoord2fv(GLenum target, const GLfloat* v); + GLAPI void APIENTRY glMultiTexCoord2i(GLenum target, GLint s, GLint t); + GLAPI void APIENTRY glMultiTexCoord2iv(GLenum target, const GLint* v); + GLAPI void APIENTRY glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); + GLAPI void APIENTRY glMultiTexCoord2sv(GLenum target, const GLshort* v); + GLAPI void APIENTRY glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); + GLAPI void APIENTRY glMultiTexCoord3dv(GLenum target, const GLdouble* v); + GLAPI void APIENTRY glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); + GLAPI void APIENTRY glMultiTexCoord3fv(GLenum target, const GLfloat* v); + GLAPI void APIENTRY glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); + GLAPI void APIENTRY glMultiTexCoord3iv(GLenum target, const GLint* v); + GLAPI void APIENTRY glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); + GLAPI void APIENTRY glMultiTexCoord3sv(GLenum target, const GLshort* v); + GLAPI void APIENTRY glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + GLAPI void APIENTRY glMultiTexCoord4dv(GLenum target, const GLdouble* v); + GLAPI void APIENTRY glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + GLAPI void APIENTRY glMultiTexCoord4fv(GLenum target, const GLfloat* v); + GLAPI void APIENTRY glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); + GLAPI void APIENTRY glMultiTexCoord4iv(GLenum target, const GLint* v); + GLAPI void APIENTRY glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + GLAPI void APIENTRY glMultiTexCoord4sv(GLenum target, const GLshort* v); + GLAPI void APIENTRY glLoadTransposeMatrixf(const GLfloat* m); + GLAPI void APIENTRY glLoadTransposeMatrixd(const GLdouble* m); + GLAPI void APIENTRY glMultTransposeMatrixf(const GLfloat* m); + GLAPI void APIENTRY glMultTransposeMatrixd(const GLdouble* m); +#endif +#endif /* GL_VERSION_1_3 */ + +#ifndef GL_VERSION_1_4 +#define GL_VERSION_1_4 1 +#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_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_POINT_SIZE_MIN 0x8126 +#define GL_POINT_SIZE_MAX 0x8127 +#define GL_POINT_DISTANCE_ATTENUATION 0x8129 +#define GL_GENERATE_MIPMAP 0x8191 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_FOG_COORDINATE_SOURCE 0x8450 +#define GL_FOG_COORDINATE 0x8451 +#define GL_FRAGMENT_DEPTH 0x8452 +#define GL_CURRENT_FOG_COORDINATE 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 +#define GL_FOG_COORDINATE_ARRAY 0x8457 +#define GL_COLOR_SUM 0x8458 +#define GL_CURRENT_SECONDARY_COLOR 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D +#define GL_SECONDARY_COLOR_ARRAY 0x845E +#define GL_TEXTURE_FILTER_CONTROL 0x8500 +#define GL_DEPTH_TEXTURE_MODE 0x884B +#define GL_COMPARE_R_TO_TEXTURE 0x884E +#define GL_BLEND_COLOR 0x8005 +#define GL_BLEND_EQUATION 0x8009 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_FUNC_SUBTRACT 0x800A +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 + typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEPROC)( + GLenum sfactorRGB, + GLenum dfactorRGB, + GLenum sfactorAlpha, + GLenum dfactorAlpha + ); + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSPROC)( + GLenum mode, + const GLint* first, + const GLsizei* count, + GLsizei drawcount + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSPROC)( + GLenum mode, + const GLsizei* count, + GLenum type, + const void* const* indices, + GLsizei drawcount + ); + typedef void(APIENTRYP PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLFOGCOORDFPROC)(GLfloat coord); + typedef void(APIENTRYP PFNGLFOGCOORDFVPROC)(const GLfloat* coord); + typedef void(APIENTRYP PFNGLFOGCOORDDPROC)(GLdouble coord); + typedef void(APIENTRYP PFNGLFOGCOORDDVPROC)(const GLdouble* coord); + typedef void(APIENTRYP PFNGLFOGCOORDPOINTERPROC)(GLenum type, GLsizei stride, const void* pointer); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3BPROC)(GLbyte red, GLbyte green, GLbyte blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3BVPROC)(const GLbyte* v); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3DPROC)(GLdouble red, GLdouble green, GLdouble blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3DVPROC)(const GLdouble* v); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3FPROC)(GLfloat red, GLfloat green, GLfloat blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3FVPROC)(const GLfloat* v); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3IPROC)(GLint red, GLint green, GLint blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3IVPROC)(const GLint* v); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3SPROC)(GLshort red, GLshort green, GLshort blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3SVPROC)(const GLshort* v); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UBPROC)(GLubyte red, GLubyte green, GLubyte blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC)(const GLubyte* v); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UIPROC)(GLuint red, GLuint green, GLuint blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC)(const GLuint* v); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3USPROC)(GLushort red, GLushort green, GLushort blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3USVPROC)(const GLushort* v); + typedef void(APIENTRYP + PFNGLSECONDARYCOLORPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void* pointer); + typedef void(APIENTRYP PFNGLWINDOWPOS2DPROC)(GLdouble x, GLdouble y); + typedef void(APIENTRYP PFNGLWINDOWPOS2DVPROC)(const GLdouble* v); + typedef void(APIENTRYP PFNGLWINDOWPOS2FPROC)(GLfloat x, GLfloat y); + typedef void(APIENTRYP PFNGLWINDOWPOS2FVPROC)(const GLfloat* v); + typedef void(APIENTRYP PFNGLWINDOWPOS2IPROC)(GLint x, GLint y); + typedef void(APIENTRYP PFNGLWINDOWPOS2IVPROC)(const GLint* v); + typedef void(APIENTRYP PFNGLWINDOWPOS2SPROC)(GLshort x, GLshort y); + typedef void(APIENTRYP PFNGLWINDOWPOS2SVPROC)(const GLshort* v); + typedef void(APIENTRYP PFNGLWINDOWPOS3DPROC)(GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLWINDOWPOS3DVPROC)(const GLdouble* v); + typedef void(APIENTRYP PFNGLWINDOWPOS3FPROC)(GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLWINDOWPOS3FVPROC)(const GLfloat* v); + typedef void(APIENTRYP PFNGLWINDOWPOS3IPROC)(GLint x, GLint y, GLint z); + typedef void(APIENTRYP PFNGLWINDOWPOS3IVPROC)(const GLint* v); + typedef void(APIENTRYP PFNGLWINDOWPOS3SPROC)(GLshort x, GLshort y, GLshort z); + typedef void(APIENTRYP PFNGLWINDOWPOS3SVPROC)(const GLshort* v); + typedef void(APIENTRYP PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + 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 glMultiDrawArrays(GLenum mode, const GLint* first, const GLsizei* count, GLsizei drawcount); + GLAPI void APIENTRY + glMultiDrawElements(GLenum mode, const GLsizei* count, GLenum type, const void* const* indices, GLsizei drawcount); + GLAPI void APIENTRY glPointParameterf(GLenum pname, GLfloat param); + GLAPI void APIENTRY glPointParameterfv(GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glPointParameteri(GLenum pname, GLint param); + GLAPI void APIENTRY glPointParameteriv(GLenum pname, const GLint* params); + GLAPI void APIENTRY glFogCoordf(GLfloat coord); + GLAPI void APIENTRY glFogCoordfv(const GLfloat* coord); + GLAPI void APIENTRY glFogCoordd(GLdouble coord); + GLAPI void APIENTRY glFogCoorddv(const GLdouble* coord); + GLAPI void APIENTRY glFogCoordPointer(GLenum type, GLsizei stride, const void* pointer); + GLAPI void APIENTRY glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); + GLAPI void APIENTRY glSecondaryColor3bv(const GLbyte* v); + GLAPI void APIENTRY glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); + GLAPI void APIENTRY glSecondaryColor3dv(const GLdouble* v); + GLAPI void APIENTRY glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); + GLAPI void APIENTRY glSecondaryColor3fv(const GLfloat* v); + GLAPI void APIENTRY glSecondaryColor3i(GLint red, GLint green, GLint blue); + GLAPI void APIENTRY glSecondaryColor3iv(const GLint* v); + GLAPI void APIENTRY glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); + GLAPI void APIENTRY glSecondaryColor3sv(const GLshort* v); + GLAPI void APIENTRY glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); + GLAPI void APIENTRY glSecondaryColor3ubv(const GLubyte* v); + GLAPI void APIENTRY glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); + GLAPI void APIENTRY glSecondaryColor3uiv(const GLuint* v); + GLAPI void APIENTRY glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); + GLAPI void APIENTRY glSecondaryColor3usv(const GLushort* v); + GLAPI void APIENTRY glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const void* pointer); + GLAPI void APIENTRY glWindowPos2d(GLdouble x, GLdouble y); + GLAPI void APIENTRY glWindowPos2dv(const GLdouble* v); + GLAPI void APIENTRY glWindowPos2f(GLfloat x, GLfloat y); + GLAPI void APIENTRY glWindowPos2fv(const GLfloat* v); + GLAPI void APIENTRY glWindowPos2i(GLint x, GLint y); + GLAPI void APIENTRY glWindowPos2iv(const GLint* v); + GLAPI void APIENTRY glWindowPos2s(GLshort x, GLshort y); + GLAPI void APIENTRY glWindowPos2sv(const GLshort* v); + GLAPI void APIENTRY glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glWindowPos3dv(const GLdouble* v); + GLAPI void APIENTRY glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glWindowPos3fv(const GLfloat* v); + GLAPI void APIENTRY glWindowPos3i(GLint x, GLint y, GLint z); + GLAPI void APIENTRY glWindowPos3iv(const GLint* v); + GLAPI void APIENTRY glWindowPos3s(GLshort x, GLshort y, GLshort z); + GLAPI void APIENTRY glWindowPos3sv(const GLshort* v); + GLAPI void APIENTRY glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); + GLAPI void APIENTRY glBlendEquation(GLenum mode); +#endif +#endif /* GL_VERSION_1_4 */ + +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 + typedef khronos_ssize_t GLsizeiptr; + typedef khronos_intptr_t GLintptr; +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#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_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_SAMPLES_PASSED 0x8914 +#define GL_SRC1_ALPHA 0x8589 +#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E +#define GL_FOG_COORD_SRC 0x8450 +#define GL_FOG_COORD 0x8451 +#define GL_CURRENT_FOG_COORD 0x8453 +#define GL_FOG_COORD_ARRAY_TYPE 0x8454 +#define GL_FOG_COORD_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORD_ARRAY_POINTER 0x8456 +#define GL_FOG_COORD_ARRAY 0x8457 +#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D +#define GL_SRC0_RGB 0x8580 +#define GL_SRC1_RGB 0x8581 +#define GL_SRC2_RGB 0x8582 +#define GL_SRC0_ALPHA 0x8588 +#define GL_SRC2_ALPHA 0x858A + typedef void(APIENTRYP PFNGLGENQUERIESPROC)(GLsizei n, GLuint* ids); + typedef void(APIENTRYP PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint* ids); + typedef GLboolean(APIENTRYP PFNGLISQUERYPROC)(GLuint id); + typedef void(APIENTRYP PFNGLBEGINQUERYPROC)(GLenum target, GLuint id); + typedef void(APIENTRYP PFNGLENDQUERYPROC)(GLenum target); + typedef void(APIENTRYP PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint* params); + 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 GLboolean(APIENTRYP PFNGLISBUFFERPROC)(GLuint buffer); + 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); + typedef void(APIENTRYP PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, void* data); + typedef void*(APIENTRYP PFNGLMAPBUFFERPROC)(GLenum target, GLenum access); + typedef GLboolean(APIENTRYP PFNGLUNMAPBUFFERPROC)(GLenum target); + typedef void(APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void** params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGenQueries(GLsizei n, GLuint* ids); + GLAPI void APIENTRY glDeleteQueries(GLsizei n, const GLuint* ids); + GLAPI GLboolean APIENTRY glIsQuery(GLuint id); + GLAPI void APIENTRY glBeginQuery(GLenum target, GLuint id); + GLAPI void APIENTRY glEndQuery(GLenum target); + GLAPI void APIENTRY glGetQueryiv(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetQueryObjectiv(GLuint id, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params); + 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 GLboolean APIENTRY glIsBuffer(GLuint buffer); + 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); + GLAPI void APIENTRY glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void* data); + GLAPI void* APIENTRY glMapBuffer(GLenum target, GLenum access); + GLAPI GLboolean APIENTRY glUnmapBuffer(GLenum target); + GLAPI void APIENTRY glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetBufferPointerv(GLenum target, GLenum pname, void** params); +#endif +#endif /* GL_VERSION_1_5 */ + +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 + typedef char GLchar; +#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_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_SHADER_TYPE 0x8B4F +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_DELETE_STATUS 0x8B80 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 +#define GL_POINT_SPRITE 0x8861 +#define GL_COORD_REPLACE 0x8862 +#define GL_MAX_TEXTURE_COORDS 0x8871 + typedef void(APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); + typedef void(APIENTRYP PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum* bufs); + typedef void(APIENTRYP PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + typedef void(APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask); + typedef void(APIENTRYP PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); + typedef void(APIENTRYP PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); + typedef void(APIENTRYP PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar* name); + 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 void(APIENTRYP PFNGLGETACTIVEATTRIBPROC)( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLint* size, + GLenum* type, + GLchar* name + ); + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMPROC)( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLint* size, + GLenum* type, + GLchar* name + ); + typedef void(APIENTRYP + PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei* count, GLuint* shaders); + 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 void(APIENTRYP PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* source); + typedef GLint(APIENTRYP PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar* name); + typedef void(APIENTRYP PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat* params); + typedef void(APIENTRYP PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, GLdouble* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat* params); + 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 GLboolean(APIENTRYP PFNGLISSHADERPROC)(GLuint shader); + 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 PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); + typedef void(APIENTRYP PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); + typedef void(APIENTRYP PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + typedef void(APIENTRYP PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + typedef void(APIENTRYP PFNGLUNIFORM1IPROC)(GLint location, GLint v0); + typedef void(APIENTRYP PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); + typedef void(APIENTRYP PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); + typedef void(APIENTRYP PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + typedef void(APIENTRYP PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLVALIDATEPROGRAMPROC)(GLuint program); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort* v); + 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 glDrawBuffers(GLsizei n, const GLenum* bufs); + GLAPI void APIENTRY glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + GLAPI void APIENTRY glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); + GLAPI void APIENTRY glStencilMaskSeparate(GLenum face, GLuint mask); + GLAPI void APIENTRY glAttachShader(GLuint program, GLuint shader); + GLAPI void APIENTRY glBindAttribLocation(GLuint program, GLuint index, const GLchar* name); + 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 void APIENTRY glGetActiveAttrib( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLint* size, + GLenum* type, + GLchar* name + ); + GLAPI void APIENTRY glGetActiveUniform( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLint* size, + GLenum* type, + GLchar* name + ); + GLAPI void APIENTRY glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei* count, GLuint* shaders); + 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 void APIENTRY glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* source); + GLAPI GLint APIENTRY glGetUniformLocation(GLuint program, const GLchar* name); + GLAPI void APIENTRY glGetUniformfv(GLuint program, GLint location, GLfloat* params); + GLAPI void APIENTRY glGetUniformiv(GLuint program, GLint location, GLint* params); + GLAPI void APIENTRY glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble* params); + GLAPI void APIENTRY glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params); + 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 GLboolean APIENTRY glIsShader(GLuint shader); + 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 glUniform1f(GLint location, GLfloat v0); + GLAPI void APIENTRY glUniform2f(GLint location, GLfloat v0, GLfloat v1); + GLAPI void APIENTRY glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + GLAPI void APIENTRY glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + GLAPI void APIENTRY glUniform1i(GLint location, GLint v0); + GLAPI void APIENTRY glUniform2i(GLint location, GLint v0, GLint v1); + GLAPI void APIENTRY glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); + GLAPI void APIENTRY glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + GLAPI void APIENTRY glUniform1fv(GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glUniform2fv(GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glUniform3fv(GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glUniform4fv(GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glUniform1iv(GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glUniform2iv(GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glUniform3iv(GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glUniform4iv(GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glValidateProgram(GLuint program); + GLAPI void APIENTRY glVertexAttrib1d(GLuint index, GLdouble x); + GLAPI void APIENTRY glVertexAttrib1dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib1f(GLuint index, GLfloat x); + GLAPI void APIENTRY glVertexAttrib1fv(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib1s(GLuint index, GLshort x); + GLAPI void APIENTRY glVertexAttrib1sv(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); + GLAPI void APIENTRY glVertexAttrib2dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); + GLAPI void APIENTRY glVertexAttrib2fv(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib2s(GLuint index, GLshort x, GLshort y); + GLAPI void APIENTRY glVertexAttrib2sv(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glVertexAttrib3dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glVertexAttrib3fv(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); + GLAPI void APIENTRY glVertexAttrib3sv(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib4Nbv(GLuint index, const GLbyte* v); + GLAPI void APIENTRY glVertexAttrib4Niv(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttrib4Nsv(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + GLAPI void APIENTRY glVertexAttrib4Nubv(GLuint index, const GLubyte* v); + GLAPI void APIENTRY glVertexAttrib4Nuiv(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttrib4Nusv(GLuint index, const GLushort* v); + GLAPI void APIENTRY glVertexAttrib4bv(GLuint index, const GLbyte* v); + GLAPI void APIENTRY glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glVertexAttrib4dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + GLAPI void APIENTRY glVertexAttrib4fv(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib4iv(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + GLAPI void APIENTRY glVertexAttrib4sv(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib4ubv(GLuint index, const GLubyte* v); + GLAPI void APIENTRY glVertexAttrib4uiv(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttrib4usv(GLuint index, const GLushort* v); + 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_2_1 +#define GL_VERSION_2_1 1 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 +#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F +#define GL_SLUMINANCE_ALPHA 0x8C44 +#define GL_SLUMINANCE8_ALPHA8 0x8C45 +#define GL_SLUMINANCE 0x8C46 +#define GL_SLUMINANCE8 0x8C47 +#define GL_COMPRESSED_SLUMINANCE 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +#endif +#endif /* GL_VERSION_2_1 */ + +#ifndef GL_VERSION_3_0 +#define GL_VERSION_3_0 1 + typedef khronos_uint16_t GLhalf; +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_CLIP_DISTANCE0 0x3000 +#define GL_CLIP_DISTANCE1 0x3001 +#define GL_CLIP_DISTANCE2 0x3002 +#define GL_CLIP_DISTANCE3 0x3003 +#define GL_CLIP_DISTANCE4 0x3004 +#define GL_CLIP_DISTANCE5 0x3005 +#define GL_CLIP_DISTANCE6 0x3006 +#define GL_CLIP_DISTANCE7 0x3007 +#define GL_MAX_CLIP_DISTANCES 0x0D32 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 +#define GL_RGBA32F 0x8814 +#define GL_RGB32F 0x8815 +#define GL_RGBA16F 0x881A +#define GL_RGB16F 0x881B +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_RGB9_E5 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_RGBA32UI 0x8D70 +#define GL_RGB32UI 0x8D71 +#define GL_RGBA16UI 0x8D76 +#define GL_RGB16UI 0x8D77 +#define GL_RGBA8UI 0x8D7C +#define GL_RGB8UI 0x8D7D +#define GL_RGBA32I 0x8D82 +#define GL_RGB32I 0x8D83 +#define GL_RGBA16I 0x8D88 +#define GL_RGB16I 0x8D89 +#define GL_RGBA8I 0x8D8E +#define GL_RGB8I 0x8D8F +#define GL_RED_INTEGER 0x8D94 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_BGR_INTEGER 0x8D9A +#define GL_BGRA_INTEGER 0x8D9B +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_QUERY_WAIT 0x8E13 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_COLOR_ATTACHMENT16 0x8CF0 +#define GL_COLOR_ATTACHMENT17 0x8CF1 +#define GL_COLOR_ATTACHMENT18 0x8CF2 +#define GL_COLOR_ATTACHMENT19 0x8CF3 +#define GL_COLOR_ATTACHMENT20 0x8CF4 +#define GL_COLOR_ATTACHMENT21 0x8CF5 +#define GL_COLOR_ATTACHMENT22 0x8CF6 +#define GL_COLOR_ATTACHMENT23 0x8CF7 +#define GL_COLOR_ATTACHMENT24 0x8CF8 +#define GL_COLOR_ATTACHMENT25 0x8CF9 +#define GL_COLOR_ATTACHMENT26 0x8CFA +#define GL_COLOR_ATTACHMENT27 0x8CFB +#define GL_COLOR_ATTACHMENT28 0x8CFC +#define GL_COLOR_ATTACHMENT29 0x8CFD +#define GL_COLOR_ATTACHMENT30 0x8CFE +#define GL_COLOR_ATTACHMENT31 0x8CFF +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_STENCIL_INDEX1 0x8D46 +#define GL_STENCIL_INDEX4 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_INDEX16 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_INDEX 0x8222 +#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#define GL_HALF_FLOAT 0x140B +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_COMPRESSED_RED_RGTC1 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC +#define GL_COMPRESSED_RG_RGTC2 0x8DBD +#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE +#define GL_RG 0x8227 +#define GL_RG_INTEGER 0x8228 +#define GL_R8 0x8229 +#define GL_R16 0x822A +#define GL_RG8 0x822B +#define GL_RG16 0x822C +#define GL_R16F 0x822D +#define GL_R32F 0x822E +#define GL_RG16F 0x822F +#define GL_RG32F 0x8230 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_CLAMP_VERTEX_COLOR 0x891A +#define GL_CLAMP_FRAGMENT_COLOR 0x891B +#define GL_ALPHA_INTEGER 0x8D97 + typedef void(APIENTRYP PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + typedef void(APIENTRYP PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean* data); + typedef void(APIENTRYP PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint* data); + typedef void(APIENTRYP PFNGLENABLEIPROC)(GLenum target, GLuint index); + typedef void(APIENTRYP PFNGLDISABLEIPROC)(GLenum target, GLuint index); + typedef GLboolean(APIENTRYP PFNGLISENABLEDIPROC)(GLenum target, GLuint index); + typedef void(APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode); + typedef void(APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC)(void); + typedef void(APIENTRYP PFNGLBINDBUFFERRANGEPROC)( + GLenum target, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer); + typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC)( + GLuint program, + GLsizei count, + const GLchar* const* varyings, + GLenum bufferMode + ); + typedef void(APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLsizei* size, + GLenum* type, + GLchar* name + ); + typedef void(APIENTRYP PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp); + typedef void(APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode); + typedef void(APIENTRYP PFNGLENDCONDITIONALRENDERPROC)(void); + typedef void(APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC)( + GLuint index, + GLint size, + GLenum type, + GLsizei stride, + const void* pointer + ); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint* params); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort* v); + typedef void(APIENTRYP PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint* params); + typedef void(APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, const GLchar* name); + typedef GLint(APIENTRYP PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar* name); + typedef void(APIENTRYP PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0); + typedef void(APIENTRYP PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1); + typedef void(APIENTRYP PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); + typedef void(APIENTRYP PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + typedef void(APIENTRYP PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, const GLuint* params); + typedef void(APIENTRYP PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, GLuint* params); + typedef void(APIENTRYP PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, const GLint* value); + typedef void(APIENTRYP PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, const GLuint* value); + typedef void(APIENTRYP PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, const GLfloat* value); + typedef void(APIENTRYP PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + typedef const GLubyte*(APIENTRYP PFNGLGETSTRINGIPROC)(GLenum name, GLuint index); + typedef GLboolean(APIENTRYP PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); + typedef void(APIENTRYP PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); + typedef void(APIENTRYP PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint* renderbuffers); + typedef void(APIENTRYP PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint* renderbuffers); + typedef void(APIENTRYP + PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + typedef void(APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params); + typedef GLboolean(APIENTRYP PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); + typedef void(APIENTRYP PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); + typedef void(APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint* framebuffers); + typedef void(APIENTRYP PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint* framebuffers); + typedef GLenum(APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC)( + GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level + ); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC)( + GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level + ); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC)( + GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLint zoffset + ); + typedef void(APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC)( + GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer + ); + typedef void(APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)( + GLenum target, + GLenum attachment, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLGENERATEMIPMAPPROC)(GLenum target); + typedef void(APIENTRYP PFNGLBLITFRAMEBUFFERPROC)( + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter + ); + typedef void(APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC)( + GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer + ); + typedef void*(APIENTRYP + PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + typedef void(APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length); + typedef void(APIENTRYP PFNGLBINDVERTEXARRAYPROC)(GLuint array); + typedef void(APIENTRYP PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint* arrays); + typedef void(APIENTRYP PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint* arrays); + typedef GLboolean(APIENTRYP PFNGLISVERTEXARRAYPROC)(GLuint array); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); + GLAPI void APIENTRY glGetBooleani_v(GLenum target, GLuint index, GLboolean* data); + GLAPI void APIENTRY glGetIntegeri_v(GLenum target, GLuint index, GLint* data); + GLAPI void APIENTRY glEnablei(GLenum target, GLuint index); + GLAPI void APIENTRY glDisablei(GLenum target, GLuint index); + GLAPI GLboolean APIENTRY glIsEnabledi(GLenum target, GLuint index); + GLAPI void APIENTRY glBeginTransformFeedback(GLenum primitiveMode); + GLAPI void APIENTRY glEndTransformFeedback(void); + GLAPI void APIENTRY glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + GLAPI void APIENTRY glBindBufferBase(GLenum target, GLuint index, GLuint buffer); + GLAPI void APIENTRY + glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode); + GLAPI void APIENTRY glGetTransformFeedbackVarying( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLsizei* size, + GLenum* type, + GLchar* name + ); + GLAPI void APIENTRY glClampColor(GLenum target, GLenum clamp); + GLAPI void APIENTRY glBeginConditionalRender(GLuint id, GLenum mode); + GLAPI void APIENTRY glEndConditionalRender(void); + GLAPI void APIENTRY + glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); + GLAPI void APIENTRY glGetVertexAttribIiv(GLuint index, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params); + GLAPI void APIENTRY glVertexAttribI1i(GLuint index, GLint x); + GLAPI void APIENTRY glVertexAttribI2i(GLuint index, GLint x, GLint y); + GLAPI void APIENTRY glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z); + GLAPI void APIENTRY glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w); + GLAPI void APIENTRY glVertexAttribI1ui(GLuint index, GLuint x); + GLAPI void APIENTRY glVertexAttribI2ui(GLuint index, GLuint x, GLuint y); + GLAPI void APIENTRY glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z); + GLAPI void APIENTRY glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + GLAPI void APIENTRY glVertexAttribI1iv(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttribI2iv(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttribI3iv(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttribI4iv(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttribI1uiv(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttribI2uiv(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttribI3uiv(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttribI4uiv(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttribI4bv(GLuint index, const GLbyte* v); + GLAPI void APIENTRY glVertexAttribI4sv(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttribI4ubv(GLuint index, const GLubyte* v); + GLAPI void APIENTRY glVertexAttribI4usv(GLuint index, const GLushort* v); + GLAPI void APIENTRY glGetUniformuiv(GLuint program, GLint location, GLuint* params); + GLAPI void APIENTRY glBindFragDataLocation(GLuint program, GLuint color, const GLchar* name); + GLAPI GLint APIENTRY glGetFragDataLocation(GLuint program, const GLchar* name); + GLAPI void APIENTRY glUniform1ui(GLint location, GLuint v0); + GLAPI void APIENTRY glUniform2ui(GLint location, GLuint v0, GLuint v1); + GLAPI void APIENTRY glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); + GLAPI void APIENTRY glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + GLAPI void APIENTRY glUniform1uiv(GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glUniform2uiv(GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glUniform3uiv(GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glUniform4uiv(GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glTexParameterIiv(GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glTexParameterIuiv(GLenum target, GLenum pname, const GLuint* params); + GLAPI void APIENTRY glGetTexParameterIiv(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint* params); + GLAPI void APIENTRY glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint* value); + GLAPI void APIENTRY glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint* value); + GLAPI void APIENTRY glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat* value); + GLAPI void APIENTRY glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + GLAPI const GLubyte* APIENTRY glGetStringi(GLenum name, GLuint index); + GLAPI GLboolean APIENTRY glIsRenderbuffer(GLuint renderbuffer); + GLAPI void APIENTRY glBindRenderbuffer(GLenum target, GLuint renderbuffer); + GLAPI void APIENTRY glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers); + GLAPI void APIENTRY glGenRenderbuffers(GLsizei n, GLuint* renderbuffers); + GLAPI void APIENTRY glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI void APIENTRY glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params); + GLAPI GLboolean APIENTRY glIsFramebuffer(GLuint framebuffer); + GLAPI void APIENTRY glBindFramebuffer(GLenum target, GLuint framebuffer); + GLAPI void APIENTRY glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers); + GLAPI void APIENTRY glGenFramebuffers(GLsizei n, GLuint* framebuffers); + GLAPI GLenum APIENTRY glCheckFramebufferStatus(GLenum target); + GLAPI void APIENTRY + glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLAPI void APIENTRY + glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLAPI void APIENTRY glFramebufferTexture3D( + GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLint zoffset + ); + GLAPI void APIENTRY + glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + GLAPI void APIENTRY + glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params); + GLAPI void APIENTRY glGenerateMipmap(GLenum target); + GLAPI void APIENTRY glBlitFramebuffer( + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter + ); + GLAPI void APIENTRY glRenderbufferStorageMultisample( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY + glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + GLAPI void* APIENTRY glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); + GLAPI void APIENTRY glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length); + GLAPI void APIENTRY glBindVertexArray(GLuint array); + GLAPI void APIENTRY glDeleteVertexArrays(GLsizei n, const GLuint* arrays); + GLAPI void APIENTRY glGenVertexArrays(GLsizei n, GLuint* arrays); + GLAPI GLboolean APIENTRY glIsVertexArray(GLuint array); +#endif +#endif /* GL_VERSION_3_0 */ + +#ifndef GL_VERSION_3_1 +#define GL_VERSION_3_1 1 +#define GL_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#define GL_SAMPLER_BUFFER 0x8DC2 +#define GL_INT_SAMPLER_2D_RECT 0x8DCD +#define GL_INT_SAMPLER_BUFFER 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 +#define GL_TEXTURE_BUFFER 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D +#define GL_TEXTURE_RECTANGLE 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM 0x8F98 +#define GL_RG16_SNORM 0x8F99 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGBA16_SNORM 0x8F9B +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_PRIMITIVE_RESTART 0x8F9D +#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_INVALID_INDEX 0xFFFFFFFFu + typedef void(APIENTRYP + PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC)( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei instancecount + ); + typedef void(APIENTRYP PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer); + typedef void(APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); + typedef void(APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC)( + GLenum readTarget, + GLenum writeTarget, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLGETUNIFORMINDICESPROC)( + GLuint program, + GLsizei uniformCount, + const GLchar* const* uniformNames, + GLuint* uniformIndices + ); + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC)( + GLuint program, + GLsizei uniformCount, + const GLuint* uniformIndices, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC)( + GLuint program, + GLuint uniformIndex, + GLsizei bufSize, + GLsizei* length, + GLchar* uniformName + ); + typedef GLuint(APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, const GLchar* uniformBlockName); + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC)( + GLuint program, + GLuint uniformBlockIndex, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)( + GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, + GLsizei* length, + GLchar* uniformBlockName + ); + typedef void(APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC)( + GLuint program, + GLuint uniformBlockIndex, + GLuint uniformBlockBinding + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); + GLAPI void APIENTRY + glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei instancecount); + GLAPI void APIENTRY glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); + GLAPI void APIENTRY glPrimitiveRestartIndex(GLuint index); + GLAPI void APIENTRY glCopyBufferSubData( + GLenum readTarget, + GLenum writeTarget, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size + ); + GLAPI void APIENTRY glGetUniformIndices( + GLuint program, + GLsizei uniformCount, + const GLchar* const* uniformNames, + GLuint* uniformIndices + ); + GLAPI void APIENTRY glGetActiveUniformsiv( + GLuint program, + GLsizei uniformCount, + const GLuint* uniformIndices, + GLenum pname, + GLint* params + ); + GLAPI void APIENTRY + glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformName); + GLAPI GLuint APIENTRY glGetUniformBlockIndex(GLuint program, const GLchar* uniformBlockName); + GLAPI void APIENTRY + glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetActiveUniformBlockName( + GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, + GLsizei* length, + GLchar* uniformBlockName + ); + GLAPI void APIENTRY glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +#endif +#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_CORE_PROFILE_BIT 0x00000001 +#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define GL_LINES_ADJACENCY 0x000A +#define GL_LINE_STRIP_ADJACENCY 0x000B +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_CONTEXT_PROFILE_MASK 0x9126 +#define GL_DEPTH_CLAMP 0x864F +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_OBJECT_TYPE 0x9112 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_UNSIGNALED 0x9118 +#define GL_SIGNALED 0x9119 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_CONDITION_SATISFIED 0x911C +#define GL_WAIT_FAILED 0x911D +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_INTEGER_SAMPLES 0x9110 + typedef void(APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC)( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLint basevertex + ); + typedef void(APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)( + GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices, + GLint basevertex + ); + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei instancecount, + GLint basevertex + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)( + GLenum mode, + const GLsizei* count, + GLenum type, + const void* const* indices, + GLsizei drawcount, + const GLint* basevertex + ); + typedef void(APIENTRYP PFNGLPROVOKINGVERTEXPROC)(GLenum mode); + typedef GLsync(APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); + typedef GLboolean(APIENTRYP PFNGLISSYNCPROC)(GLsync sync); + typedef void(APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync); + typedef GLenum(APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); + typedef void(APIENTRYP PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); + typedef void(APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64* data); + typedef void(APIENTRYP + PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, GLsizei* length, GLint* values); + typedef void(APIENTRYP PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64* data); + typedef void(APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, GLint64* params); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); + typedef void(APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC)( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC)( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat* val); + typedef void(APIENTRYP PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const void* indices, GLint basevertex); + GLAPI void APIENTRY glDrawRangeElementsBaseVertex( + GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices, + GLint basevertex + ); + GLAPI void APIENTRY glDrawElementsInstancedBaseVertex( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei instancecount, + GLint basevertex + ); + GLAPI void APIENTRY glMultiDrawElementsBaseVertex( + GLenum mode, + const GLsizei* count, + GLenum type, + const void* const* indices, + GLsizei drawcount, + const GLint* basevertex + ); + GLAPI void APIENTRY glProvokingVertex(GLenum mode); + GLAPI GLsync APIENTRY glFenceSync(GLenum condition, GLbitfield flags); + GLAPI GLboolean APIENTRY glIsSync(GLsync sync); + GLAPI void APIENTRY glDeleteSync(GLsync sync); + GLAPI GLenum APIENTRY glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLAPI void APIENTRY glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + GLAPI void APIENTRY glGetInteger64v(GLenum pname, GLint64* data); + GLAPI void APIENTRY glGetSynciv(GLsync sync, GLenum pname, GLsizei count, GLsizei* length, GLint* values); + GLAPI void APIENTRY glGetInteger64i_v(GLenum target, GLuint index, GLint64* data); + GLAPI void APIENTRY glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params); + GLAPI void APIENTRY glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); + GLAPI void APIENTRY glTexImage2DMultisample( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY glTexImage3DMultisample( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY glGetMultisamplefv(GLenum pname, GLuint index, GLfloat* val); + GLAPI void APIENTRY glSampleMaski(GLuint maskNumber, GLbitfield mask); +#endif +#endif /* GL_VERSION_3_2 */ + +#ifndef GL_VERSION_3_3 +#define GL_VERSION_3_3 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_SRC1_COLOR 0x88F9 +#define GL_ONE_MINUS_SRC1_COLOR 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#define GL_SAMPLER_BINDING 0x8919 +#define GL_RGB10_A2UI 0x906F +#define GL_TEXTURE_SWIZZLE_R 0x8E42 +#define GL_TEXTURE_SWIZZLE_G 0x8E43 +#define GL_TEXTURE_SWIZZLE_B 0x8E44 +#define GL_TEXTURE_SWIZZLE_A 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIMESTAMP 0x8E28 +#define GL_INT_2_10_10_10_REV 0x8D9F + typedef void(APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)( + GLuint program, + GLuint colorNumber, + GLuint index, + const GLchar* name + ); + typedef GLint(APIENTRYP PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar* name); + typedef void(APIENTRYP PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint* samplers); + typedef void(APIENTRYP PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint* samplers); + typedef GLboolean(APIENTRYP PFNGLISSAMPLERPROC)(GLuint sampler); + typedef void(APIENTRYP PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler); + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, const GLint* param); + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, const GLfloat* param); + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, const GLint* param); + typedef void(APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, const GLuint* param); + typedef void(APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, GLuint* params); + typedef void(APIENTRYP PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target); + typedef void(APIENTRYP PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64* params); + typedef void(APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64* params); + typedef void(APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor); + typedef void(APIENTRYP PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + typedef void(APIENTRYP + PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); + typedef void(APIENTRYP PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + typedef void(APIENTRYP + PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); + typedef void(APIENTRYP PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + typedef void(APIENTRYP + PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); + typedef void(APIENTRYP PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); + typedef void(APIENTRYP + PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); + typedef void(APIENTRYP PFNGLVERTEXP2UIPROC)(GLenum type, GLuint value); + typedef void(APIENTRYP PFNGLVERTEXP2UIVPROC)(GLenum type, const GLuint* value); + typedef void(APIENTRYP PFNGLVERTEXP3UIPROC)(GLenum type, GLuint value); + typedef void(APIENTRYP PFNGLVERTEXP3UIVPROC)(GLenum type, const GLuint* value); + typedef void(APIENTRYP PFNGLVERTEXP4UIPROC)(GLenum type, GLuint value); + typedef void(APIENTRYP PFNGLVERTEXP4UIVPROC)(GLenum type, const GLuint* value); + typedef void(APIENTRYP PFNGLTEXCOORDP1UIPROC)(GLenum type, GLuint coords); + typedef void(APIENTRYP PFNGLTEXCOORDP1UIVPROC)(GLenum type, const GLuint* coords); + typedef void(APIENTRYP PFNGLTEXCOORDP2UIPROC)(GLenum type, GLuint coords); + typedef void(APIENTRYP PFNGLTEXCOORDP2UIVPROC)(GLenum type, const GLuint* coords); + typedef void(APIENTRYP PFNGLTEXCOORDP3UIPROC)(GLenum type, GLuint coords); + typedef void(APIENTRYP PFNGLTEXCOORDP3UIVPROC)(GLenum type, const GLuint* coords); + typedef void(APIENTRYP PFNGLTEXCOORDP4UIPROC)(GLenum type, GLuint coords); + typedef void(APIENTRYP PFNGLTEXCOORDP4UIVPROC)(GLenum type, const GLuint* coords); + typedef void(APIENTRYP PFNGLMULTITEXCOORDP1UIPROC)(GLenum texture, GLenum type, GLuint coords); + typedef void(APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC)(GLenum texture, GLenum type, const GLuint* coords); + typedef void(APIENTRYP PFNGLMULTITEXCOORDP2UIPROC)(GLenum texture, GLenum type, GLuint coords); + typedef void(APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC)(GLenum texture, GLenum type, const GLuint* coords); + typedef void(APIENTRYP PFNGLMULTITEXCOORDP3UIPROC)(GLenum texture, GLenum type, GLuint coords); + typedef void(APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC)(GLenum texture, GLenum type, const GLuint* coords); + typedef void(APIENTRYP PFNGLMULTITEXCOORDP4UIPROC)(GLenum texture, GLenum type, GLuint coords); + typedef void(APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC)(GLenum texture, GLenum type, const GLuint* coords); + typedef void(APIENTRYP PFNGLNORMALP3UIPROC)(GLenum type, GLuint coords); + typedef void(APIENTRYP PFNGLNORMALP3UIVPROC)(GLenum type, const GLuint* coords); + typedef void(APIENTRYP PFNGLCOLORP3UIPROC)(GLenum type, GLuint color); + typedef void(APIENTRYP PFNGLCOLORP3UIVPROC)(GLenum type, const GLuint* color); + typedef void(APIENTRYP PFNGLCOLORP4UIPROC)(GLenum type, GLuint color); + typedef void(APIENTRYP PFNGLCOLORP4UIVPROC)(GLenum type, const GLuint* color); + typedef void(APIENTRYP PFNGLSECONDARYCOLORP3UIPROC)(GLenum type, GLuint color); + typedef void(APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC)(GLenum type, const GLuint* color); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar* name); + GLAPI GLint APIENTRY glGetFragDataIndex(GLuint program, const GLchar* name); + GLAPI void APIENTRY glGenSamplers(GLsizei count, GLuint* samplers); + GLAPI void APIENTRY glDeleteSamplers(GLsizei count, const GLuint* samplers); + GLAPI GLboolean APIENTRY glIsSampler(GLuint sampler); + GLAPI void APIENTRY glBindSampler(GLuint unit, GLuint sampler); + GLAPI void APIENTRY glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); + GLAPI void APIENTRY glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint* param); + GLAPI void APIENTRY glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); + GLAPI void APIENTRY glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat* param); + GLAPI void APIENTRY glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint* param); + GLAPI void APIENTRY glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint* param); + GLAPI void APIENTRY glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint* params); + GLAPI void APIENTRY glQueryCounter(GLuint id, GLenum target); + GLAPI void APIENTRY glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64* params); + GLAPI void APIENTRY glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64* params); + GLAPI void APIENTRY glVertexAttribDivisor(GLuint index, GLuint divisor); + GLAPI void APIENTRY glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + GLAPI void APIENTRY glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); + GLAPI void APIENTRY glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + GLAPI void APIENTRY glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); + GLAPI void APIENTRY glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + GLAPI void APIENTRY glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); + GLAPI void APIENTRY glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); + GLAPI void APIENTRY glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint* value); + GLAPI void APIENTRY glVertexP2ui(GLenum type, GLuint value); + GLAPI void APIENTRY glVertexP2uiv(GLenum type, const GLuint* value); + GLAPI void APIENTRY glVertexP3ui(GLenum type, GLuint value); + GLAPI void APIENTRY glVertexP3uiv(GLenum type, const GLuint* value); + GLAPI void APIENTRY glVertexP4ui(GLenum type, GLuint value); + GLAPI void APIENTRY glVertexP4uiv(GLenum type, const GLuint* value); + GLAPI void APIENTRY glTexCoordP1ui(GLenum type, GLuint coords); + GLAPI void APIENTRY glTexCoordP1uiv(GLenum type, const GLuint* coords); + GLAPI void APIENTRY glTexCoordP2ui(GLenum type, GLuint coords); + GLAPI void APIENTRY glTexCoordP2uiv(GLenum type, const GLuint* coords); + GLAPI void APIENTRY glTexCoordP3ui(GLenum type, GLuint coords); + GLAPI void APIENTRY glTexCoordP3uiv(GLenum type, const GLuint* coords); + GLAPI void APIENTRY glTexCoordP4ui(GLenum type, GLuint coords); + GLAPI void APIENTRY glTexCoordP4uiv(GLenum type, const GLuint* coords); + GLAPI void APIENTRY glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords); + GLAPI void APIENTRY glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint* coords); + GLAPI void APIENTRY glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords); + GLAPI void APIENTRY glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint* coords); + GLAPI void APIENTRY glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords); + GLAPI void APIENTRY glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint* coords); + GLAPI void APIENTRY glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords); + GLAPI void APIENTRY glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint* coords); + GLAPI void APIENTRY glNormalP3ui(GLenum type, GLuint coords); + GLAPI void APIENTRY glNormalP3uiv(GLenum type, const GLuint* coords); + GLAPI void APIENTRY glColorP3ui(GLenum type, GLuint color); + GLAPI void APIENTRY glColorP3uiv(GLenum type, const GLuint* color); + GLAPI void APIENTRY glColorP4ui(GLenum type, GLuint color); + GLAPI void APIENTRY glColorP4uiv(GLenum type, const GLuint* color); + GLAPI void APIENTRY glSecondaryColorP3ui(GLenum type, GLuint color); + GLAPI void APIENTRY glSecondaryColorP3uiv(GLenum type, const GLuint* color); +#endif +#endif /* GL_VERSION_3_3 */ + +#ifndef GL_VERSION_4_0 +#define GL_VERSION_4_0 1 +#define GL_SAMPLE_SHADING 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F +#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 +#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D +#define GL_MAX_VERTEX_STREAMS 0x8E71 +#define GL_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE +#define GL_DOUBLE_MAT2 0x8F46 +#define GL_DOUBLE_MAT3 0x8F47 +#define GL_DOUBLE_MAT4 0x8F48 +#define GL_DOUBLE_MAT2x3 0x8F49 +#define GL_DOUBLE_MAT2x4 0x8F4A +#define GL_DOUBLE_MAT3x2 0x8F4B +#define GL_DOUBLE_MAT3x4 0x8F4C +#define GL_DOUBLE_MAT4x2 0x8F4D +#define GL_DOUBLE_MAT4x3 0x8F4E +#define GL_ACTIVE_SUBROUTINES 0x8DE5 +#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 +#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 +#define GL_MAX_SUBROUTINES 0x8DE7 +#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 +#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A +#define GL_COMPATIBLE_SUBROUTINES 0x8E4B +#define GL_PATCHES 0x000E +#define GL_PATCH_VERTICES 0x8E72 +#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 +#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 +#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 +#define GL_TESS_GEN_MODE 0x8E76 +#define GL_TESS_GEN_SPACING 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 +#define GL_TESS_GEN_POINT_MODE 0x8E79 +#define GL_ISOLINES 0x8E7A +#define GL_FRACTIONAL_ODD 0x8E7B +#define GL_FRACTIONAL_EVEN 0x8E7C +#define GL_MAX_PATCH_VERTICES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 +#define GL_TESS_EVALUATION_SHADER 0x8E87 +#define GL_TESS_CONTROL_SHADER 0x8E88 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 + typedef void(APIENTRYP PFNGLMINSAMPLESHADINGPROC)(GLfloat value); + typedef void(APIENTRYP PFNGLBLENDEQUATIONIPROC)(GLuint buf, GLenum mode); + typedef void(APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + typedef void(APIENTRYP PFNGLBLENDFUNCIPROC)(GLuint buf, GLenum src, GLenum dst); + typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC)( + GLuint buf, + GLenum srcRGB, + GLenum dstRGB, + GLenum srcAlpha, + GLenum dstAlpha + ); + typedef void(APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC)(GLenum mode, const void* indirect); + typedef void(APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void* indirect); + typedef void(APIENTRYP PFNGLUNIFORM1DPROC)(GLint location, GLdouble x); + typedef void(APIENTRYP PFNGLUNIFORM2DPROC)(GLint location, GLdouble x, GLdouble y); + typedef void(APIENTRYP PFNGLUNIFORM3DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLUNIFORM4DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + typedef void(APIENTRYP PFNGLUNIFORM1DVPROC)(GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLUNIFORM2DVPROC)(GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLUNIFORM3DVPROC)(GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLUNIFORM4DVPROC)(GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLGETUNIFORMDVPROC)(GLuint program, GLint location, GLdouble* params); + typedef GLint(APIENTRYP + PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)(GLuint program, GLenum shadertype, const GLchar* name); + typedef GLuint(APIENTRYP PFNGLGETSUBROUTINEINDEXPROC)(GLuint program, GLenum shadertype, const GLchar* name); + typedef void(APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)( + GLuint program, + GLenum shadertype, + GLuint index, + GLenum pname, + GLint* values + ); + typedef void(APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)( + GLuint program, + GLenum shadertype, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLchar* name + ); + typedef void(APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC)( + GLuint program, + GLenum shadertype, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLchar* name + ); + typedef void(APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC)(GLenum shadertype, GLsizei count, const GLuint* indices); + typedef void(APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC)(GLenum shadertype, GLint location, GLuint* params); + typedef void(APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC)(GLuint program, GLenum shadertype, GLenum pname, GLint* values); + typedef void(APIENTRYP PFNGLPATCHPARAMETERIPROC)(GLenum pname, GLint value); + typedef void(APIENTRYP PFNGLPATCHPARAMETERFVPROC)(GLenum pname, const GLfloat* values); + typedef void(APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC)(GLenum target, GLuint id); + typedef void(APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei n, const GLuint* ids); + typedef void(APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint* ids); + typedef GLboolean(APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC)(GLuint id); + typedef void(APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC)(void); + typedef void(APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC)(void); + typedef void(APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC)(GLenum mode, GLuint id); + typedef void(APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)(GLenum mode, GLuint id, GLuint stream); + typedef void(APIENTRYP PFNGLBEGINQUERYINDEXEDPROC)(GLenum target, GLuint index, GLuint id); + typedef void(APIENTRYP PFNGLENDQUERYINDEXEDPROC)(GLenum target, GLuint index); + typedef void(APIENTRYP PFNGLGETQUERYINDEXEDIVPROC)(GLenum target, GLuint index, GLenum pname, GLint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMinSampleShading(GLfloat value); + GLAPI void APIENTRY glBlendEquationi(GLuint buf, GLenum mode); + GLAPI void APIENTRY glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + GLAPI void APIENTRY glBlendFunci(GLuint buf, GLenum src, GLenum dst); + GLAPI void APIENTRY + glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + GLAPI void APIENTRY glDrawArraysIndirect(GLenum mode, const void* indirect); + GLAPI void APIENTRY glDrawElementsIndirect(GLenum mode, GLenum type, const void* indirect); + GLAPI void APIENTRY glUniform1d(GLint location, GLdouble x); + GLAPI void APIENTRY glUniform2d(GLint location, GLdouble x, GLdouble y); + GLAPI void APIENTRY glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glUniform1dv(GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glUniform2dv(GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glUniform3dv(GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glUniform4dv(GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble* value); + GLAPI void APIENTRY glGetUniformdv(GLuint program, GLint location, GLdouble* params); + GLAPI GLint APIENTRY glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar* name); + GLAPI GLuint APIENTRY glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar* name); + GLAPI void APIENTRY + glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint* values); + GLAPI void APIENTRY glGetActiveSubroutineUniformName( + GLuint program, + GLenum shadertype, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLchar* name + ); + GLAPI void APIENTRY glGetActiveSubroutineName( + GLuint program, + GLenum shadertype, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLchar* name + ); + GLAPI void APIENTRY glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint* indices); + GLAPI void APIENTRY glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint* params); + GLAPI void APIENTRY glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint* values); + GLAPI void APIENTRY glPatchParameteri(GLenum pname, GLint value); + GLAPI void APIENTRY glPatchParameterfv(GLenum pname, const GLfloat* values); + GLAPI void APIENTRY glBindTransformFeedback(GLenum target, GLuint id); + GLAPI void APIENTRY glDeleteTransformFeedbacks(GLsizei n, const GLuint* ids); + GLAPI void APIENTRY glGenTransformFeedbacks(GLsizei n, GLuint* ids); + GLAPI GLboolean APIENTRY glIsTransformFeedback(GLuint id); + GLAPI void APIENTRY glPauseTransformFeedback(void); + GLAPI void APIENTRY glResumeTransformFeedback(void); + GLAPI void APIENTRY glDrawTransformFeedback(GLenum mode, GLuint id); + GLAPI void APIENTRY glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); + GLAPI void APIENTRY glBeginQueryIndexed(GLenum target, GLuint index, GLuint id); + GLAPI void APIENTRY glEndQueryIndexed(GLenum target, GLuint index); + GLAPI void APIENTRY glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint* params); +#endif +#endif /* GL_VERSION_4_0 */ + +#ifndef GL_VERSION_4_1 +#define GL_VERSION_4_1 1 +#define GL_FIXED 0x140C +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_RGB565 0x8D62 +#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 +#define GL_PROGRAM_BINARY_LENGTH 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE +#define GL_PROGRAM_BINARY_FORMATS 0x87FF +#define GL_VERTEX_SHADER_BIT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT 0x00000002 +#define GL_GEOMETRY_SHADER_BIT 0x00000004 +#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 +#define GL_ALL_SHADER_BITS 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE 0x8258 +#define GL_ACTIVE_PROGRAM 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_MAX_VIEWPORTS 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE 0x825D +#define GL_LAYER_PROVOKING_VERTEX 0x825E +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F +#define GL_UNDEFINED_VERTEX 0x8260 + typedef void(APIENTRYP PFNGLRELEASESHADERCOMPILERPROC)(void); + typedef void(APIENTRYP PFNGLSHADERBINARYPROC)( + GLsizei count, + const GLuint* shaders, + GLenum binaryFormat, + const void* binary, + GLsizei length + ); + typedef void(APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC)( + GLenum shadertype, + GLenum precisiontype, + GLint* range, + GLint* precision + ); + typedef void(APIENTRYP PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); + typedef void(APIENTRYP PFNGLCLEARDEPTHFPROC)(GLfloat d); + typedef void(APIENTRYP PFNGLGETPROGRAMBINARYPROC)( + GLuint program, + GLsizei bufSize, + GLsizei* length, + GLenum* binaryFormat, + void* binary + ); + typedef void(APIENTRYP + PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, const void* binary, GLsizei length); + typedef void(APIENTRYP PFNGLPROGRAMPARAMETERIPROC)(GLuint program, GLenum pname, GLint value); + typedef void(APIENTRYP PFNGLUSEPROGRAMSTAGESPROC)(GLuint pipeline, GLbitfield stages, GLuint program); + typedef void(APIENTRYP PFNGLACTIVESHADERPROGRAMPROC)(GLuint pipeline, GLuint program); + typedef GLuint(APIENTRYP PFNGLCREATESHADERPROGRAMVPROC)(GLenum type, GLsizei count, const GLchar* const* strings); + typedef void(APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC)(GLuint pipeline); + typedef void(APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC)(GLsizei n, const GLuint* pipelines); + typedef void(APIENTRYP PFNGLGENPROGRAMPIPELINESPROC)(GLsizei n, GLuint* pipelines); + typedef GLboolean(APIENTRYP PFNGLISPROGRAMPIPELINEPROC)(GLuint pipeline); + typedef void(APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC)(GLuint pipeline, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1IPROC)(GLuint program, GLint location, GLint v0); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM1IVPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1FPROC)(GLuint program, GLint location, GLfloat v0); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM1FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1DPROC)(GLuint program, GLint location, GLdouble v0); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM1DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC)(GLuint program, GLint location, GLuint v0); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM1UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2IPROC)(GLuint program, GLint location, GLint v0, GLint v1); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM2IVPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM2FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM2DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM2UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3IVPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM4IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM4IVPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4FPROC)( + GLuint program, + GLint location, + GLfloat v0, + GLfloat v1, + GLfloat v2, + GLfloat v3 + ); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM4FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4DPROC)( + GLuint program, + GLint location, + GLdouble v0, + GLdouble v1, + GLdouble v2, + GLdouble v3 + ); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM4DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC)( + GLuint program, + GLint location, + GLuint v0, + GLuint v1, + GLuint v2, + GLuint v3 + ); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM4UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC)(GLuint pipeline); + typedef void(APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC)( + GLuint pipeline, + GLsizei bufSize, + GLsizei* length, + GLchar* infoLog + ); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1DPROC)(GLuint index, GLdouble x); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2DPROC)(GLuint index, GLdouble x, GLdouble y); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4DVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC)( + GLuint index, + GLint size, + GLenum type, + GLsizei stride, + const void* pointer + ); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC)(GLuint index, GLenum pname, GLdouble* params); + typedef void(APIENTRYP PFNGLVIEWPORTARRAYVPROC)(GLuint first, GLsizei count, const GLfloat* v); + typedef void(APIENTRYP PFNGLVIEWPORTINDEXEDFPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); + typedef void(APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLSCISSORARRAYVPROC)(GLuint first, GLsizei count, const GLint* v); + typedef void(APIENTRYP + PFNGLSCISSORINDEXEDPROC)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); + typedef void(APIENTRYP PFNGLSCISSORINDEXEDVPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLDEPTHRANGEARRAYVPROC)(GLuint first, GLsizei count, const GLdouble* v); + typedef void(APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC)(GLuint index, GLdouble n, GLdouble f); + typedef void(APIENTRYP PFNGLGETFLOATI_VPROC)(GLenum target, GLuint index, GLfloat* data); + typedef void(APIENTRYP PFNGLGETDOUBLEI_VPROC)(GLenum target, GLuint index, GLdouble* data); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glReleaseShaderCompiler(void); + GLAPI void APIENTRY + glShaderBinary(GLsizei count, const GLuint* shaders, GLenum binaryFormat, const void* binary, GLsizei length); + GLAPI void APIENTRY + glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); + GLAPI void APIENTRY glDepthRangef(GLfloat n, GLfloat f); + GLAPI void APIENTRY glClearDepthf(GLfloat d); + GLAPI void APIENTRY + glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void* binary); + GLAPI void APIENTRY glProgramBinary(GLuint program, GLenum binaryFormat, const void* binary, GLsizei length); + GLAPI void APIENTRY glProgramParameteri(GLuint program, GLenum pname, GLint value); + GLAPI void APIENTRY glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program); + GLAPI void APIENTRY glActiveShaderProgram(GLuint pipeline, GLuint program); + GLAPI GLuint APIENTRY glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const* strings); + GLAPI void APIENTRY glBindProgramPipeline(GLuint pipeline); + GLAPI void APIENTRY glDeleteProgramPipelines(GLsizei n, const GLuint* pipelines); + GLAPI void APIENTRY glGenProgramPipelines(GLsizei n, GLuint* pipelines); + GLAPI GLboolean APIENTRY glIsProgramPipeline(GLuint pipeline); + GLAPI void APIENTRY glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint* params); + GLAPI void APIENTRY glProgramUniform1i(GLuint program, GLint location, GLint v0); + GLAPI void APIENTRY glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glProgramUniform1f(GLuint program, GLint location, GLfloat v0); + GLAPI void APIENTRY glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glProgramUniform1d(GLuint program, GLint location, GLdouble v0); + GLAPI void APIENTRY glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniform1ui(GLuint program, GLint location, GLuint v0); + GLAPI void APIENTRY glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1); + GLAPI void APIENTRY glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1); + GLAPI void APIENTRY glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1); + GLAPI void APIENTRY glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); + GLAPI void APIENTRY glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + GLAPI void APIENTRY glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + GLAPI void APIENTRY glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); + GLAPI void APIENTRY glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + GLAPI void APIENTRY glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + GLAPI void APIENTRY glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY + glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + GLAPI void APIENTRY glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY + glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); + GLAPI void APIENTRY glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + GLAPI void APIENTRY glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY + glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY + glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY + glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glProgramUniformMatrix2dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x3fv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x2fv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x4fv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x2fv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x4fv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x3fv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x3dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x2dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x4dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x2dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x4dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x3dv( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glValidateProgramPipeline(GLuint pipeline); + GLAPI void APIENTRY glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar* infoLog); + GLAPI void APIENTRY glVertexAttribL1d(GLuint index, GLdouble x); + GLAPI void APIENTRY glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y); + GLAPI void APIENTRY glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glVertexAttribL1dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttribL2dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttribL3dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttribL4dv(GLuint index, const GLdouble* v); + GLAPI void APIENTRY + glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); + GLAPI void APIENTRY glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble* params); + GLAPI void APIENTRY glViewportArrayv(GLuint first, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); + GLAPI void APIENTRY glViewportIndexedfv(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glScissorArrayv(GLuint first, GLsizei count, const GLint* v); + GLAPI void APIENTRY glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); + GLAPI void APIENTRY glScissorIndexedv(GLuint index, const GLint* v); + GLAPI void APIENTRY glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble* v); + GLAPI void APIENTRY glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f); + GLAPI void APIENTRY glGetFloati_v(GLenum target, GLuint index, GLfloat* data); + GLAPI void APIENTRY glGetDoublei_v(GLenum target, GLuint index, GLdouble* data); +#endif +#endif /* GL_VERSION_4_1 */ + +#ifndef GL_VERSION_4_2 +#define GL_VERSION_4_2 1 +#define GL_COPY_READ_BUFFER_BINDING 0x8F36 +#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 +#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 +#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127 +#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128 +#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129 +#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A +#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B +#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C +#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D +#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E +#define GL_NUM_SAMPLE_COUNTS 0x9380 +#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC +#define GL_ATOMIC_COUNTER_BUFFER 0x92C0 +#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 +#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2 +#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3 +#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB +#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF +#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 +#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 +#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5 +#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 +#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 +#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC +#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 +#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA +#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 +#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 +#define GL_UNIFORM_BARRIER_BIT 0x00000004 +#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 +#define GL_COMMAND_BARRIER_BIT 0x00000040 +#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 +#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 +#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 +#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 +#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 +#define GL_ALL_BARRIER_BITS 0xFFFFFFFF +#define GL_MAX_IMAGE_UNITS 0x8F38 +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 +#define GL_IMAGE_BINDING_NAME 0x8F3A +#define GL_IMAGE_BINDING_LEVEL 0x8F3B +#define GL_IMAGE_BINDING_LAYERED 0x8F3C +#define GL_IMAGE_BINDING_LAYER 0x8F3D +#define GL_IMAGE_BINDING_ACCESS 0x8F3E +#define GL_IMAGE_1D 0x904C +#define GL_IMAGE_2D 0x904D +#define GL_IMAGE_3D 0x904E +#define GL_IMAGE_2D_RECT 0x904F +#define GL_IMAGE_CUBE 0x9050 +#define GL_IMAGE_BUFFER 0x9051 +#define GL_IMAGE_1D_ARRAY 0x9052 +#define GL_IMAGE_2D_ARRAY 0x9053 +#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 +#define GL_IMAGE_2D_MULTISAMPLE 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 +#define GL_INT_IMAGE_1D 0x9057 +#define GL_INT_IMAGE_2D 0x9058 +#define GL_INT_IMAGE_3D 0x9059 +#define GL_INT_IMAGE_2D_RECT 0x905A +#define GL_INT_IMAGE_CUBE 0x905B +#define GL_INT_IMAGE_BUFFER 0x905C +#define GL_INT_IMAGE_1D_ARRAY 0x905D +#define GL_INT_IMAGE_2D_ARRAY 0x905E +#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F +#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 +#define GL_UNSIGNED_INT_IMAGE_1D 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D 0x9063 +#define GL_UNSIGNED_INT_IMAGE_3D 0x9064 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 +#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C +#define GL_MAX_IMAGE_SAMPLES 0x906D +#define GL_IMAGE_BINDING_FORMAT 0x906E +#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 +#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD +#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE +#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF +#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F + typedef void(APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)( + GLenum mode, + GLint first, + GLsizei count, + GLsizei instancecount, + GLuint baseinstance + ); + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei instancecount, + GLuint baseinstance + ); + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei instancecount, + GLint basevertex, + GLuint baseinstance + ); + typedef void(APIENTRYP PFNGLGETINTERNALFORMATIVPROC)( + GLenum target, + GLenum internalformat, + GLenum pname, + GLsizei count, + GLint* params + ); + typedef void(APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)( + GLuint program, + GLuint bufferIndex, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLBINDIMAGETEXTUREPROC)( + GLuint unit, + GLuint texture, + GLint level, + GLboolean layered, + GLint layer, + GLenum access, + GLenum format + ); + typedef void(APIENTRYP PFNGLMEMORYBARRIERPROC)(GLbitfield barriers); + typedef void(APIENTRYP PFNGLTEXSTORAGE1DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + typedef void(APIENTRYP PFNGLTEXSTORAGE2DPROC)( + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLTEXSTORAGE3DPROC)( + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth + ); + typedef void(APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)(GLenum mode, GLuint id, GLsizei instancecount); + typedef void(APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)( + GLenum mode, + GLuint id, + GLuint stream, + GLsizei instancecount + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawArraysInstancedBaseInstance( + GLenum mode, + GLint first, + GLsizei count, + GLsizei instancecount, + GLuint baseinstance + ); + GLAPI void APIENTRY glDrawElementsInstancedBaseInstance( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei instancecount, + GLuint baseinstance + ); + GLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei instancecount, + GLint basevertex, + GLuint baseinstance + ); + GLAPI void APIENTRY + glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint* params); + GLAPI void APIENTRY + glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint* params); + GLAPI void APIENTRY glBindImageTexture( + GLuint unit, + GLuint texture, + GLint level, + GLboolean layered, + GLint layer, + GLenum access, + GLenum format + ); + GLAPI void APIENTRY glMemoryBarrier(GLbitfield barriers); + GLAPI void APIENTRY glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + GLAPI void APIENTRY + glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI void APIENTRY + glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); + GLAPI void APIENTRY glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount); + GLAPI void APIENTRY + glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); +#endif +#endif /* GL_VERSION_4_2 */ + +#ifndef GL_VERSION_4_3 +#define GL_VERSION_4_3 1 + typedef void(APIENTRY* GLDEBUGPROC)( + GLenum source, + GLenum type, + GLuint id, + GLenum severity, + GLsizei length, + const GLchar* message, + const void* userParam + ); +#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 +#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E +#define GL_COMPRESSED_RGB8_ETC2 0x9274 +#define GL_COMPRESSED_SRGB8_ETC2 0x9275 +#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 +#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 +#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 +#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 +#define GL_COMPRESSED_R11_EAC 0x9270 +#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 +#define GL_COMPRESSED_RG11_EAC 0x9272 +#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 +#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A +#define GL_MAX_ELEMENT_INDEX 0x8D6B +#define GL_COMPUTE_SHADER 0x91B9 +#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB +#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC +#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD +#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 +#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 +#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 +#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 +#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 +#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB +#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE +#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF +#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED +#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE +#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF +#define GL_COMPUTE_SHADER_BIT 0x00000020 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_BUFFER 0x82E0 +#define GL_SHADER 0x82E1 +#define GL_PROGRAM 0x82E2 +#define GL_QUERY 0x82E3 +#define GL_PROGRAM_PIPELINE 0x82E4 +#define GL_SAMPLER 0x82E6 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_MAX_UNIFORM_LOCATIONS 0x826E +#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 +#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312 +#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 +#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 +#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 +#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 +#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317 +#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 +#define GL_INTERNALFORMAT_SUPPORTED 0x826F +#define GL_INTERNALFORMAT_PREFERRED 0x8270 +#define GL_INTERNALFORMAT_RED_SIZE 0x8271 +#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272 +#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273 +#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274 +#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275 +#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276 +#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277 +#define GL_INTERNALFORMAT_RED_TYPE 0x8278 +#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279 +#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A +#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B +#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C +#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D +#define GL_MAX_WIDTH 0x827E +#define GL_MAX_HEIGHT 0x827F +#define GL_MAX_DEPTH 0x8280 +#define GL_MAX_LAYERS 0x8281 +#define GL_MAX_COMBINED_DIMENSIONS 0x8282 +#define GL_COLOR_COMPONENTS 0x8283 +#define GL_DEPTH_COMPONENTS 0x8284 +#define GL_STENCIL_COMPONENTS 0x8285 +#define GL_COLOR_RENDERABLE 0x8286 +#define GL_DEPTH_RENDERABLE 0x8287 +#define GL_STENCIL_RENDERABLE 0x8288 +#define GL_FRAMEBUFFER_RENDERABLE 0x8289 +#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A +#define GL_FRAMEBUFFER_BLEND 0x828B +#define GL_READ_PIXELS 0x828C +#define GL_READ_PIXELS_FORMAT 0x828D +#define GL_READ_PIXELS_TYPE 0x828E +#define GL_TEXTURE_IMAGE_FORMAT 0x828F +#define GL_TEXTURE_IMAGE_TYPE 0x8290 +#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 +#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 +#define GL_MIPMAP 0x8293 +#define GL_MANUAL_GENERATE_MIPMAP 0x8294 +#define GL_AUTO_GENERATE_MIPMAP 0x8295 +#define GL_COLOR_ENCODING 0x8296 +#define GL_SRGB_READ 0x8297 +#define GL_SRGB_WRITE 0x8298 +#define GL_FILTER 0x829A +#define GL_VERTEX_TEXTURE 0x829B +#define GL_TESS_CONTROL_TEXTURE 0x829C +#define GL_TESS_EVALUATION_TEXTURE 0x829D +#define GL_GEOMETRY_TEXTURE 0x829E +#define GL_FRAGMENT_TEXTURE 0x829F +#define GL_COMPUTE_TEXTURE 0x82A0 +#define GL_TEXTURE_SHADOW 0x82A1 +#define GL_TEXTURE_GATHER 0x82A2 +#define GL_TEXTURE_GATHER_SHADOW 0x82A3 +#define GL_SHADER_IMAGE_LOAD 0x82A4 +#define GL_SHADER_IMAGE_STORE 0x82A5 +#define GL_SHADER_IMAGE_ATOMIC 0x82A6 +#define GL_IMAGE_TEXEL_SIZE 0x82A7 +#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8 +#define GL_IMAGE_PIXEL_FORMAT 0x82A9 +#define GL_IMAGE_PIXEL_TYPE 0x82AA +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF +#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 +#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 +#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 +#define GL_CLEAR_BUFFER 0x82B4 +#define GL_TEXTURE_VIEW 0x82B5 +#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6 +#define GL_FULL_SUPPORT 0x82B7 +#define GL_CAVEAT_SUPPORT 0x82B8 +#define GL_IMAGE_CLASS_4_X_32 0x82B9 +#define GL_IMAGE_CLASS_2_X_32 0x82BA +#define GL_IMAGE_CLASS_1_X_32 0x82BB +#define GL_IMAGE_CLASS_4_X_16 0x82BC +#define GL_IMAGE_CLASS_2_X_16 0x82BD +#define GL_IMAGE_CLASS_1_X_16 0x82BE +#define GL_IMAGE_CLASS_4_X_8 0x82BF +#define GL_IMAGE_CLASS_2_X_8 0x82C0 +#define GL_IMAGE_CLASS_1_X_8 0x82C1 +#define GL_IMAGE_CLASS_11_11_10 0x82C2 +#define GL_IMAGE_CLASS_10_10_10_2 0x82C3 +#define GL_VIEW_CLASS_128_BITS 0x82C4 +#define GL_VIEW_CLASS_96_BITS 0x82C5 +#define GL_VIEW_CLASS_64_BITS 0x82C6 +#define GL_VIEW_CLASS_48_BITS 0x82C7 +#define GL_VIEW_CLASS_32_BITS 0x82C8 +#define GL_VIEW_CLASS_24_BITS 0x82C9 +#define GL_VIEW_CLASS_16_BITS 0x82CA +#define GL_VIEW_CLASS_8_BITS 0x82CB +#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC +#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD +#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE +#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF +#define GL_VIEW_CLASS_RGTC1_RED 0x82D0 +#define GL_VIEW_CLASS_RGTC2_RG 0x82D1 +#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 +#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 +#define GL_UNIFORM 0x92E1 +#define GL_UNIFORM_BLOCK 0x92E2 +#define GL_PROGRAM_INPUT 0x92E3 +#define GL_PROGRAM_OUTPUT 0x92E4 +#define GL_BUFFER_VARIABLE 0x92E5 +#define GL_SHADER_STORAGE_BLOCK 0x92E6 +#define GL_VERTEX_SUBROUTINE 0x92E8 +#define GL_TESS_CONTROL_SUBROUTINE 0x92E9 +#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA +#define GL_GEOMETRY_SUBROUTINE 0x92EB +#define GL_FRAGMENT_SUBROUTINE 0x92EC +#define GL_COMPUTE_SUBROUTINE 0x92ED +#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE +#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF +#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 +#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 +#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 +#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 +#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 +#define GL_ACTIVE_RESOURCES 0x92F5 +#define GL_MAX_NAME_LENGTH 0x92F6 +#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 +#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 +#define GL_NAME_LENGTH 0x92F9 +#define GL_TYPE 0x92FA +#define GL_ARRAY_SIZE 0x92FB +#define GL_OFFSET 0x92FC +#define GL_BLOCK_INDEX 0x92FD +#define GL_ARRAY_STRIDE 0x92FE +#define GL_MATRIX_STRIDE 0x92FF +#define GL_IS_ROW_MAJOR 0x9300 +#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 +#define GL_BUFFER_BINDING 0x9302 +#define GL_BUFFER_DATA_SIZE 0x9303 +#define GL_NUM_ACTIVE_VARIABLES 0x9304 +#define GL_ACTIVE_VARIABLES 0x9305 +#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 +#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 +#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A +#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B +#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C +#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D +#define GL_LOCATION 0x930E +#define GL_LOCATION_INDEX 0x930F +#define GL_IS_PER_PATCH 0x92E7 +#define GL_SHADER_STORAGE_BUFFER 0x90D2 +#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 +#define GL_SHADER_STORAGE_BUFFER_START 0x90D4 +#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 +#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 +#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA +#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB +#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC +#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD +#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE +#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF +#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000 +#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 +#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA +#define GL_TEXTURE_BUFFER_OFFSET 0x919D +#define GL_TEXTURE_BUFFER_SIZE 0x919E +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F +#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +#define GL_VERTEX_ATTRIB_BINDING 0x82D4 +#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 +#define GL_VERTEX_BINDING_DIVISOR 0x82D6 +#define GL_VERTEX_BINDING_OFFSET 0x82D7 +#define GL_VERTEX_BINDING_STRIDE 0x82D8 +#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 +#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA +#define GL_VERTEX_BINDING_BUFFER 0x8F4F +#define GL_DISPLAY_LIST 0x82E7 + typedef void(APIENTRYP PFNGLCLEARBUFFERDATAPROC)( + GLenum target, + GLenum internalformat, + GLenum format, + GLenum type, + const void* data + ); + typedef void(APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC)( + GLenum target, + GLenum internalformat, + GLintptr offset, + GLsizeiptr size, + GLenum format, + GLenum type, + const void* data + ); + typedef void(APIENTRYP PFNGLDISPATCHCOMPUTEPROC)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + typedef void(APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC)(GLintptr indirect); + typedef void(APIENTRYP PFNGLCOPYIMAGESUBDATAPROC)( + GLuint srcName, + GLenum srcTarget, + GLint srcLevel, + GLint srcX, + GLint srcY, + GLint srcZ, + GLuint dstName, + GLenum dstTarget, + GLint dstLevel, + GLint dstX, + GLint dstY, + GLint dstZ, + GLsizei srcWidth, + GLsizei srcHeight, + GLsizei srcDepth + ); + typedef void(APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETINTERNALFORMATI64VPROC)( + GLenum target, + GLenum internalformat, + GLenum pname, + GLsizei count, + GLint64* params + ); + typedef void(APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth + ); + typedef void(APIENTRYP PFNGLINVALIDATETEXIMAGEPROC)(GLuint texture, GLint level); + typedef void(APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); + typedef void(APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC)(GLuint buffer); + typedef void(APIENTRYP + PFNGLINVALIDATEFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, const GLenum* attachments); + typedef void(APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC)( + GLenum target, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC)( + GLenum mode, + const void* indirect, + GLsizei drawcount, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC)( + GLenum mode, + GLenum type, + const void* indirect, + GLsizei drawcount, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC)( + GLuint program, + GLenum programInterface, + GLenum pname, + GLint* params + ); + typedef GLuint(APIENTRYP + PFNGLGETPROGRAMRESOURCEINDEXPROC)(GLuint program, GLenum programInterface, const GLchar* name); + typedef void(APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC)( + GLuint program, + GLenum programInterface, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLchar* name + ); + typedef void(APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC)( + GLuint program, + GLenum programInterface, + GLuint index, + GLsizei propCount, + const GLenum* props, + GLsizei count, + GLsizei* length, + GLint* params + ); + typedef GLint(APIENTRYP + PFNGLGETPROGRAMRESOURCELOCATIONPROC)(GLuint program, GLenum programInterface, const GLchar* name); + typedef GLint(APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)( + GLuint program, + GLenum programInterface, + const GLchar* name + ); + typedef void(APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC)( + GLuint program, + GLuint storageBlockIndex, + GLuint storageBlockBinding + ); + typedef void(APIENTRYP PFNGLTEXBUFFERRANGEPROC)( + GLenum target, + GLenum internalformat, + GLuint buffer, + GLintptr offset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC)( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC)( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLTEXTUREVIEWPROC)( + GLuint texture, + GLenum target, + GLuint origtexture, + GLenum internalformat, + GLuint minlevel, + GLuint numlevels, + GLuint minlayer, + GLuint numlayers + ); + typedef void(APIENTRYP + PFNGLBINDVERTEXBUFFERPROC)(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + typedef void(APIENTRYP PFNGLVERTEXATTRIBFORMATPROC)( + GLuint attribindex, + GLint size, + GLenum type, + GLboolean normalized, + GLuint relativeoffset + ); + typedef void(APIENTRYP + PFNGLVERTEXATTRIBIFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + typedef void(APIENTRYP + PFNGLVERTEXATTRIBLFORMATPROC)(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + typedef void(APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC)(GLuint attribindex, GLuint bindingindex); + typedef void(APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC)(GLuint bindingindex, GLuint divisor); + typedef void(APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC)( + GLenum source, + GLenum type, + GLenum severity, + GLsizei count, + const GLuint* ids, + GLboolean enabled + ); + typedef void(APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC)( + GLenum source, + GLenum type, + GLuint id, + GLenum severity, + GLsizei length, + const GLchar* buf + ); + typedef void(APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC)(GLDEBUGPROC callback, const void* userParam); + typedef GLuint(APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC)( + GLuint count, + GLsizei bufSize, + GLenum* sources, + GLenum* types, + GLuint* ids, + GLenum* severities, + GLsizei* lengths, + GLchar* messageLog + ); + typedef void(APIENTRYP PFNGLPUSHDEBUGGROUPPROC)(GLenum source, GLuint id, GLsizei length, const GLchar* message); + typedef void(APIENTRYP PFNGLPOPDEBUGGROUPPROC)(void); + typedef void(APIENTRYP PFNGLOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei length, const GLchar* label); + typedef void(APIENTRYP PFNGLGETOBJECTLABELPROC)( + GLenum identifier, + GLuint name, + GLsizei bufSize, + GLsizei* length, + GLchar* label + ); + typedef void(APIENTRYP PFNGLOBJECTPTRLABELPROC)(const void* ptr, GLsizei length, const GLchar* label); + typedef void(APIENTRYP + PFNGLGETOBJECTPTRLABELPROC)(const void* ptr, GLsizei bufSize, GLsizei* length, GLchar* label); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void* data); + GLAPI void APIENTRY glClearBufferSubData( + GLenum target, + GLenum internalformat, + GLintptr offset, + GLsizeiptr size, + GLenum format, + GLenum type, + const void* data + ); + GLAPI void APIENTRY glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + GLAPI void APIENTRY glDispatchComputeIndirect(GLintptr indirect); + GLAPI void APIENTRY glCopyImageSubData( + GLuint srcName, + GLenum srcTarget, + GLint srcLevel, + GLint srcX, + GLint srcY, + GLint srcZ, + GLuint dstName, + GLenum dstTarget, + GLint dstLevel, + GLint dstX, + GLint dstY, + GLint dstZ, + GLsizei srcWidth, + GLsizei srcHeight, + GLsizei srcDepth + ); + GLAPI void APIENTRY glFramebufferParameteri(GLenum target, GLenum pname, GLint param); + GLAPI void APIENTRY glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY + glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint64* params); + GLAPI void APIENTRY glInvalidateTexSubImage( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth + ); + GLAPI void APIENTRY glInvalidateTexImage(GLuint texture, GLint level); + GLAPI void APIENTRY glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length); + GLAPI void APIENTRY glInvalidateBufferData(GLuint buffer); + GLAPI void APIENTRY glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments); + GLAPI void APIENTRY glInvalidateSubFramebuffer( + GLenum target, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glMultiDrawArraysIndirect(GLenum mode, const void* indirect, GLsizei drawcount, GLsizei stride); + GLAPI void APIENTRY + glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void* indirect, GLsizei drawcount, GLsizei stride); + GLAPI void APIENTRY glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint* params); + GLAPI GLuint APIENTRY glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar* name); + GLAPI void APIENTRY glGetProgramResourceName( + GLuint program, + GLenum programInterface, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLchar* name + ); + GLAPI void APIENTRY glGetProgramResourceiv( + GLuint program, + GLenum programInterface, + GLuint index, + GLsizei propCount, + const GLenum* props, + GLsizei count, + GLsizei* length, + GLint* params + ); + GLAPI GLint APIENTRY glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar* name); + GLAPI GLint APIENTRY glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar* name); + GLAPI void APIENTRY + glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); + GLAPI void APIENTRY + glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + GLAPI void APIENTRY glTexStorage2DMultisample( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY glTexStorage3DMultisample( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY glTextureView( + GLuint texture, + GLenum target, + GLuint origtexture, + GLenum internalformat, + GLuint minlevel, + GLuint numlevels, + GLuint minlayer, + GLuint numlayers + ); + GLAPI void APIENTRY glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + GLAPI void APIENTRY + glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + GLAPI void APIENTRY glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + GLAPI void APIENTRY glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + GLAPI void APIENTRY glVertexAttribBinding(GLuint attribindex, GLuint bindingindex); + GLAPI void APIENTRY glVertexBindingDivisor(GLuint bindingindex, GLuint divisor); + GLAPI void APIENTRY glDebugMessageControl( + GLenum source, + GLenum type, + GLenum severity, + GLsizei count, + const GLuint* ids, + GLboolean enabled + ); + GLAPI void APIENTRY + glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf); + GLAPI void APIENTRY glDebugMessageCallback(GLDEBUGPROC callback, const void* userParam); + GLAPI GLuint APIENTRY glGetDebugMessageLog( + GLuint count, + GLsizei bufSize, + GLenum* sources, + GLenum* types, + GLuint* ids, + GLenum* severities, + GLsizei* lengths, + GLchar* messageLog + ); + GLAPI void APIENTRY glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar* message); + GLAPI void APIENTRY glPopDebugGroup(void); + GLAPI void APIENTRY glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar* label); + GLAPI void APIENTRY + glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar* label); + GLAPI void APIENTRY glObjectPtrLabel(const void* ptr, GLsizei length, const GLchar* label); + GLAPI void APIENTRY glGetObjectPtrLabel(const void* ptr, GLsizei bufSize, GLsizei* length, GLchar* label); +#endif +#endif /* GL_VERSION_4_3 */ + +#ifndef GL_VERSION_4_4 +#define GL_VERSION_4_4 1 +#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_TEXTURE_BUFFER_BINDING 0x8C2A +#define GL_MAP_PERSISTENT_BIT 0x0040 +#define GL_MAP_COHERENT_BIT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT 0x0100 +#define GL_CLIENT_STORAGE_BIT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F +#define GL_BUFFER_STORAGE_FLAGS 0x8220 +#define GL_CLEAR_TEXTURE 0x9365 +#define GL_LOCATION_COMPONENT 0x934A +#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B +#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C +#define GL_QUERY_BUFFER 0x9192 +#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000 +#define GL_QUERY_BUFFER_BINDING 0x9193 +#define GL_QUERY_RESULT_NO_WAIT 0x9194 +#define GL_MIRROR_CLAMP_TO_EDGE 0x8743 + typedef void(APIENTRYP PFNGLBUFFERSTORAGEPROC)(GLenum target, GLsizeiptr size, const void* data, GLbitfield flags); + typedef void(APIENTRYP + PFNGLCLEARTEXIMAGEPROC)(GLuint texture, GLint level, GLenum format, GLenum type, const void* data); + typedef void(APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* data + ); + typedef void(APIENTRYP PFNGLBINDBUFFERSBASEPROC)(GLenum target, GLuint first, GLsizei count, const GLuint* buffers); + typedef void(APIENTRYP PFNGLBINDBUFFERSRANGEPROC)( + GLenum target, + GLuint first, + GLsizei count, + const GLuint* buffers, + const GLintptr* offsets, + const GLsizeiptr* sizes + ); + typedef void(APIENTRYP PFNGLBINDTEXTURESPROC)(GLuint first, GLsizei count, const GLuint* textures); + typedef void(APIENTRYP PFNGLBINDSAMPLERSPROC)(GLuint first, GLsizei count, const GLuint* samplers); + typedef void(APIENTRYP PFNGLBINDIMAGETEXTURESPROC)(GLuint first, GLsizei count, const GLuint* textures); + typedef void(APIENTRYP PFNGLBINDVERTEXBUFFERSPROC)( + GLuint first, + GLsizei count, + const GLuint* buffers, + const GLintptr* offsets, + const GLsizei* strides + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBufferStorage(GLenum target, GLsizeiptr size, const void* data, GLbitfield flags); + GLAPI void APIENTRY glClearTexImage(GLuint texture, GLint level, GLenum format, GLenum type, const void* data); + GLAPI void APIENTRY glClearTexSubImage( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* data + ); + GLAPI void APIENTRY glBindBuffersBase(GLenum target, GLuint first, GLsizei count, const GLuint* buffers); + GLAPI void APIENTRY glBindBuffersRange( + GLenum target, + GLuint first, + GLsizei count, + const GLuint* buffers, + const GLintptr* offsets, + const GLsizeiptr* sizes + ); + GLAPI void APIENTRY glBindTextures(GLuint first, GLsizei count, const GLuint* textures); + GLAPI void APIENTRY glBindSamplers(GLuint first, GLsizei count, const GLuint* samplers); + GLAPI void APIENTRY glBindImageTextures(GLuint first, GLsizei count, const GLuint* textures); + GLAPI void APIENTRY glBindVertexBuffers( + GLuint first, + GLsizei count, + const GLuint* buffers, + const GLintptr* offsets, + const GLsizei* strides + ); +#endif +#endif /* GL_VERSION_4_4 */ + +#ifndef GL_VERSION_4_5 +#define GL_VERSION_4_5 1 +#define GL_CONTEXT_LOST 0x0507 +#define GL_NEGATIVE_ONE_TO_ONE 0x935E +#define GL_ZERO_TO_ONE 0x935F +#define GL_CLIP_ORIGIN 0x935C +#define GL_CLIP_DEPTH_MODE 0x935D +#define GL_QUERY_WAIT_INVERTED 0x8E17 +#define GL_QUERY_NO_WAIT_INVERTED 0x8E18 +#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19 +#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A +#define GL_MAX_CULL_DISTANCES 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA +#define GL_TEXTURE_TARGET 0x1006 +#define GL_QUERY_TARGET 0x82EA +#define GL_GUILTY_CONTEXT_RESET 0x8253 +#define GL_INNOCENT_CONTEXT_RESET 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET 0x8252 +#define GL_NO_RESET_NOTIFICATION 0x8261 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004 +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_MINMAX 0x802E +#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC + typedef void(APIENTRYP PFNGLCLIPCONTROLPROC)(GLenum origin, GLenum depth); + typedef void(APIENTRYP PFNGLCREATETRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint* ids); + typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)(GLuint xfb, GLuint index, GLuint buffer); + typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)( + GLuint xfb, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLGETTRANSFORMFEEDBACKIVPROC)(GLuint xfb, GLenum pname, GLint* param); + 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); + typedef void(APIENTRYP PFNGLCREATEBUFFERSPROC)(GLsizei n, GLuint* buffers); + typedef void(APIENTRYP + PFNGLNAMEDBUFFERSTORAGEPROC)(GLuint buffer, GLsizeiptr size, const void* data, GLbitfield flags); + typedef void(APIENTRYP PFNGLNAMEDBUFFERDATAPROC)(GLuint buffer, GLsizeiptr size, const void* data, GLenum usage); + typedef void(APIENTRYP + PFNGLNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); + typedef void(APIENTRYP PFNGLCOPYNAMEDBUFFERSUBDATAPROC)( + GLuint readBuffer, + GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDBUFFERDATAPROC)( + GLuint buffer, + GLenum internalformat, + GLenum format, + GLenum type, + const void* data + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAPROC)( + GLuint buffer, + GLenum internalformat, + GLintptr offset, + GLsizeiptr size, + GLenum format, + GLenum type, + const void* data + ); + typedef void*(APIENTRYP PFNGLMAPNAMEDBUFFERPROC)(GLuint buffer, GLenum access); + typedef void*(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEPROC)( + GLuint buffer, + GLintptr offset, + GLsizeiptr length, + GLbitfield access + ); + typedef GLboolean(APIENTRYP PFNGLUNMAPNAMEDBUFFERPROC)(GLuint buffer); + typedef void(APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVPROC)(GLuint buffer, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)(GLuint buffer, GLenum pname, GLint64* params); + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVPROC)(GLuint buffer, GLenum pname, void** params); + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, void* data); + typedef void(APIENTRYP PFNGLCREATEFRAMEBUFFERSPROC)(GLsizei n, GLuint* framebuffers); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)( + GLuint framebuffer, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)(GLuint framebuffer, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)( + GLuint framebuffer, + GLenum attachment, + GLuint texture, + GLint level + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)( + GLuint framebuffer, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)(GLuint framebuffer, GLenum buf); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)(GLuint framebuffer, GLsizei n, const GLenum* bufs); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)(GLuint framebuffer, GLenum src); + typedef void(APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)( + GLuint framebuffer, + GLsizei numAttachments, + const GLenum* attachments + ); + typedef void(APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)( + GLuint framebuffer, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)( + GLuint framebuffer, + GLenum buffer, + GLint drawbuffer, + const GLint* value + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)( + GLuint framebuffer, + GLenum buffer, + GLint drawbuffer, + const GLuint* value + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)( + GLuint framebuffer, + GLenum buffer, + GLint drawbuffer, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)( + GLuint framebuffer, + GLenum buffer, + GLint drawbuffer, + GLfloat depth, + GLint stencil + ); + typedef void(APIENTRYP PFNGLBLITNAMEDFRAMEBUFFERPROC)( + GLuint readFramebuffer, + GLuint drawFramebuffer, + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter + ); + typedef GLenum(APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)(GLuint framebuffer, GLenum target); + typedef void(APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)(GLuint framebuffer, GLenum pname, GLint* param); + typedef void(APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)( + GLuint framebuffer, + GLenum attachment, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLCREATERENDERBUFFERSPROC)(GLsizei n, GLuint* renderbuffers); + typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEPROC)( + GLuint renderbuffer, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)( + GLuint renderbuffer, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)(GLuint renderbuffer, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLCREATETEXTURESPROC)(GLenum target, GLsizei n, GLuint* textures); + typedef void(APIENTRYP PFNGLTEXTUREBUFFERPROC)(GLuint texture, GLenum internalformat, GLuint buffer); + typedef void(APIENTRYP PFNGLTEXTUREBUFFERRANGEPROC)( + GLuint texture, + GLenum internalformat, + GLuint buffer, + GLintptr offset, + GLsizeiptr size + ); + typedef void(APIENTRYP + PFNGLTEXTURESTORAGE1DPROC)(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE2DPROC)( + GLuint texture, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE3DPROC)( + GLuint texture, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)( + GLuint texture, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)( + GLuint texture, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE1DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE2DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE3DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint x, + GLint y, + GLsizei width + ); + typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERFPROC)(GLuint texture, GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, const GLfloat* param); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIPROC)(GLuint texture, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, const GLuint* params); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, const GLint* param); + typedef void(APIENTRYP PFNGLGENERATETEXTUREMIPMAPPROC)(GLuint texture); + typedef void(APIENTRYP PFNGLBINDTEXTUREUNITPROC)(GLuint unit, GLuint texture); + typedef void(APIENTRYP PFNGLGETTEXTUREIMAGEPROC)( + GLuint texture, + GLint level, + GLenum format, + GLenum type, + GLsizei bufSize, + void* pixels + ); + typedef void(APIENTRYP + PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLsizei bufSize, void* pixels); + typedef void(APIENTRYP + PFNGLGETTEXTURELEVELPARAMETERFVPROC)(GLuint texture, GLint level, GLenum pname, GLfloat* params); + typedef void(APIENTRYP + PFNGLGETTEXTURELEVELPARAMETERIVPROC)(GLuint texture, GLint level, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, GLuint* params); + typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLCREATEVERTEXARRAYSPROC)(GLsizei n, GLuint* arrays); + typedef void(APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); + typedef void(APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); + typedef void(APIENTRYP PFNGLVERTEXARRAYELEMENTBUFFERPROC)(GLuint vaobj, GLuint buffer); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERPROC)( + GLuint vaobj, + GLuint bindingindex, + GLuint buffer, + GLintptr offset, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERSPROC)( + GLuint vaobj, + GLuint first, + GLsizei count, + const GLuint* buffers, + const GLintptr* offsets, + const GLsizei* strides + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYATTRIBBINDINGPROC)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); + typedef void(APIENTRYP PFNGLVERTEXARRAYATTRIBFORMATPROC)( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLboolean normalized, + GLuint relativeoffset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYATTRIBIFORMATPROC)( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLuint relativeoffset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYATTRIBLFORMATPROC)( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLuint relativeoffset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYBINDINGDIVISORPROC)(GLuint vaobj, GLuint bindingindex, GLuint divisor); + typedef void(APIENTRYP PFNGLGETVERTEXARRAYIVPROC)(GLuint vaobj, GLenum pname, GLint* param); + typedef void(APIENTRYP PFNGLGETVERTEXARRAYINDEXEDIVPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint* param); + typedef void(APIENTRYP + PFNGLGETVERTEXARRAYINDEXED64IVPROC)(GLuint vaobj, GLuint index, GLenum pname, GLint64* param); + typedef void(APIENTRYP PFNGLCREATESAMPLERSPROC)(GLsizei n, GLuint* samplers); + typedef void(APIENTRYP PFNGLCREATEPROGRAMPIPELINESPROC)(GLsizei n, GLuint* pipelines); + typedef void(APIENTRYP PFNGLCREATEQUERIESPROC)(GLenum target, GLsizei n, GLuint* ids); + typedef void(APIENTRYP PFNGLGETQUERYBUFFEROBJECTI64VPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + typedef void(APIENTRYP PFNGLGETQUERYBUFFEROBJECTIVPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + typedef void(APIENTRYP PFNGLGETQUERYBUFFEROBJECTUI64VPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + typedef void(APIENTRYP PFNGLGETQUERYBUFFEROBJECTUIVPROC)(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + typedef void(APIENTRYP PFNGLMEMORYBARRIERBYREGIONPROC)(GLbitfield barriers); + typedef void(APIENTRYP PFNGLGETTEXTURESUBIMAGEPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + GLsizei bufSize, + void* pixels + ); + typedef void(APIENTRYP PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLsizei bufSize, + void* pixels + ); + typedef GLenum(APIENTRYP PFNGLGETGRAPHICSRESETSTATUSPROC)(void); + typedef void(APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint lod, GLsizei bufSize, void* pixels); + typedef void(APIENTRYP PFNGLGETNTEXIMAGEPROC)( + GLenum target, + GLint level, + GLenum format, + GLenum type, + GLsizei bufSize, + void* pixels + ); + typedef void(APIENTRYP PFNGLGETNUNIFORMDVPROC)(GLuint program, GLint location, GLsizei bufSize, GLdouble* params); + typedef void(APIENTRYP PFNGLGETNUNIFORMFVPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat* params); + typedef void(APIENTRYP PFNGLGETNUNIFORMIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLint* params); + typedef void(APIENTRYP PFNGLGETNUNIFORMUIVPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint* params); + typedef void(APIENTRYP PFNGLREADNPIXELSPROC)( + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + GLsizei bufSize, + void* data + ); + typedef void(APIENTRYP PFNGLGETNMAPDVPROC)(GLenum target, GLenum query, GLsizei bufSize, GLdouble* v); + typedef void(APIENTRYP PFNGLGETNMAPFVPROC)(GLenum target, GLenum query, GLsizei bufSize, GLfloat* v); + typedef void(APIENTRYP PFNGLGETNMAPIVPROC)(GLenum target, GLenum query, GLsizei bufSize, GLint* v); + typedef void(APIENTRYP PFNGLGETNPIXELMAPFVPROC)(GLenum map, GLsizei bufSize, GLfloat* values); + typedef void(APIENTRYP PFNGLGETNPIXELMAPUIVPROC)(GLenum map, GLsizei bufSize, GLuint* values); + typedef void(APIENTRYP PFNGLGETNPIXELMAPUSVPROC)(GLenum map, GLsizei bufSize, GLushort* values); + typedef void(APIENTRYP PFNGLGETNPOLYGONSTIPPLEPROC)(GLsizei bufSize, GLubyte* pattern); + typedef void(APIENTRYP + PFNGLGETNCOLORTABLEPROC)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table); + typedef void(APIENTRYP PFNGLGETNCONVOLUTIONFILTERPROC)( + GLenum target, + GLenum format, + GLenum type, + GLsizei bufSize, + void* image + ); + typedef void(APIENTRYP PFNGLGETNSEPARABLEFILTERPROC)( + GLenum target, + GLenum format, + GLenum type, + GLsizei rowBufSize, + void* row, + GLsizei columnBufSize, + void* column, + void* span + ); + typedef void(APIENTRYP PFNGLGETNHISTOGRAMPROC)( + GLenum target, + GLboolean reset, + GLenum format, + GLenum type, + GLsizei bufSize, + void* values + ); + typedef void(APIENTRYP PFNGLGETNMINMAXPROC)( + GLenum target, + GLboolean reset, + GLenum format, + GLenum type, + GLsizei bufSize, + void* values + ); + typedef void(APIENTRYP PFNGLTEXTUREBARRIERPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glClipControl(GLenum origin, GLenum depth); + GLAPI void APIENTRY glCreateTransformFeedbacks(GLsizei n, GLuint* ids); + GLAPI void APIENTRY glTransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer); + GLAPI void APIENTRY + glTransformFeedbackBufferRange(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + GLAPI void APIENTRY glGetTransformFeedbackiv(GLuint xfb, GLenum pname, GLint* param); + GLAPI void APIENTRY glGetTransformFeedbacki_v(GLuint xfb, GLenum pname, GLuint index, GLint* param); + GLAPI void APIENTRY glGetTransformFeedbacki64_v(GLuint xfb, GLenum pname, GLuint index, GLint64* param); + GLAPI void APIENTRY glCreateBuffers(GLsizei n, GLuint* buffers); + GLAPI void APIENTRY glNamedBufferStorage(GLuint buffer, GLsizeiptr size, const void* data, GLbitfield flags); + GLAPI void APIENTRY glNamedBufferData(GLuint buffer, GLsizeiptr size, const void* data, GLenum usage); + GLAPI void APIENTRY glNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); + GLAPI void APIENTRY glCopyNamedBufferSubData( + GLuint readBuffer, + GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size + ); + GLAPI void APIENTRY + glClearNamedBufferData(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void* data); + GLAPI void APIENTRY glClearNamedBufferSubData( + GLuint buffer, + GLenum internalformat, + GLintptr offset, + GLsizeiptr size, + GLenum format, + GLenum type, + const void* data + ); + GLAPI void* APIENTRY glMapNamedBuffer(GLuint buffer, GLenum access); + GLAPI void* APIENTRY glMapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); + GLAPI GLboolean APIENTRY glUnmapNamedBuffer(GLuint buffer); + GLAPI void APIENTRY glFlushMappedNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length); + GLAPI void APIENTRY glGetNamedBufferParameteriv(GLuint buffer, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetNamedBufferParameteri64v(GLuint buffer, GLenum pname, GLint64* params); + GLAPI void APIENTRY glGetNamedBufferPointerv(GLuint buffer, GLenum pname, void** params); + GLAPI void APIENTRY glGetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr size, void* data); + GLAPI void APIENTRY glCreateFramebuffers(GLsizei n, GLuint* framebuffers); + GLAPI void APIENTRY glNamedFramebufferRenderbuffer( + GLuint framebuffer, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer + ); + GLAPI void APIENTRY glNamedFramebufferParameteri(GLuint framebuffer, GLenum pname, GLint param); + GLAPI void APIENTRY glNamedFramebufferTexture(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); + GLAPI void APIENTRY + glNamedFramebufferTextureLayer(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); + GLAPI void APIENTRY glNamedFramebufferDrawBuffer(GLuint framebuffer, GLenum buf); + GLAPI void APIENTRY glNamedFramebufferDrawBuffers(GLuint framebuffer, GLsizei n, const GLenum* bufs); + GLAPI void APIENTRY glNamedFramebufferReadBuffer(GLuint framebuffer, GLenum src); + GLAPI void APIENTRY + glInvalidateNamedFramebufferData(GLuint framebuffer, GLsizei numAttachments, const GLenum* attachments); + GLAPI void APIENTRY glInvalidateNamedFramebufferSubData( + GLuint framebuffer, + GLsizei numAttachments, + const GLenum* attachments, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY + glClearNamedFramebufferiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint* value); + GLAPI void APIENTRY + glClearNamedFramebufferuiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint* value); + GLAPI void APIENTRY + glClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat* value); + GLAPI void APIENTRY + glClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); + GLAPI void APIENTRY glBlitNamedFramebuffer( + GLuint readFramebuffer, + GLuint drawFramebuffer, + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter + ); + GLAPI GLenum APIENTRY glCheckNamedFramebufferStatus(GLuint framebuffer, GLenum target); + GLAPI void APIENTRY glGetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint* param); + GLAPI void APIENTRY + glGetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params); + GLAPI void APIENTRY glCreateRenderbuffers(GLsizei n, GLuint* renderbuffers); + GLAPI void APIENTRY + glNamedRenderbufferStorage(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI void APIENTRY glNamedRenderbufferStorageMultisample( + GLuint renderbuffer, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glGetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint* params); + GLAPI void APIENTRY glCreateTextures(GLenum target, GLsizei n, GLuint* textures); + GLAPI void APIENTRY glTextureBuffer(GLuint texture, GLenum internalformat, GLuint buffer); + GLAPI void APIENTRY + glTextureBufferRange(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); + GLAPI void APIENTRY glTextureStorage1D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width); + GLAPI void APIENTRY + glTextureStorage2D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI void APIENTRY glTextureStorage3D( + GLuint texture, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth + ); + GLAPI void APIENTRY glTextureStorage2DMultisample( + GLuint texture, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY glTextureStorage3DMultisample( + GLuint texture, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY glTextureSubImage1D( + GLuint texture, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTextureSubImage2D( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTextureSubImage3D( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glCompressedTextureSubImage1D( + GLuint texture, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTextureSubImage2D( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTextureSubImage3D( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY + glCopyTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + GLAPI void APIENTRY glCopyTextureSubImage2D( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glCopyTextureSubImage3D( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glTextureParameterf(GLuint texture, GLenum pname, GLfloat param); + GLAPI void APIENTRY glTextureParameterfv(GLuint texture, GLenum pname, const GLfloat* param); + GLAPI void APIENTRY glTextureParameteri(GLuint texture, GLenum pname, GLint param); + GLAPI void APIENTRY glTextureParameterIiv(GLuint texture, GLenum pname, const GLint* params); + GLAPI void APIENTRY glTextureParameterIuiv(GLuint texture, GLenum pname, const GLuint* params); + GLAPI void APIENTRY glTextureParameteriv(GLuint texture, GLenum pname, const GLint* param); + GLAPI void APIENTRY glGenerateTextureMipmap(GLuint texture); + GLAPI void APIENTRY glBindTextureUnit(GLuint unit, GLuint texture); + GLAPI void APIENTRY + glGetTextureImage(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* pixels); + GLAPI void APIENTRY glGetCompressedTextureImage(GLuint texture, GLint level, GLsizei bufSize, void* pixels); + GLAPI void APIENTRY glGetTextureLevelParameterfv(GLuint texture, GLint level, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetTextureLevelParameteriv(GLuint texture, GLint level, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetTextureParameterfv(GLuint texture, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetTextureParameterIiv(GLuint texture, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetTextureParameterIuiv(GLuint texture, GLenum pname, GLuint* params); + GLAPI void APIENTRY glGetTextureParameteriv(GLuint texture, GLenum pname, GLint* params); + GLAPI void APIENTRY glCreateVertexArrays(GLsizei n, GLuint* arrays); + GLAPI void APIENTRY glDisableVertexArrayAttrib(GLuint vaobj, GLuint index); + GLAPI void APIENTRY glEnableVertexArrayAttrib(GLuint vaobj, GLuint index); + GLAPI void APIENTRY glVertexArrayElementBuffer(GLuint vaobj, GLuint buffer); + GLAPI void APIENTRY + glVertexArrayVertexBuffer(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + GLAPI void APIENTRY glVertexArrayVertexBuffers( + GLuint vaobj, + GLuint first, + GLsizei count, + const GLuint* buffers, + const GLintptr* offsets, + const GLsizei* strides + ); + GLAPI void APIENTRY glVertexArrayAttribBinding(GLuint vaobj, GLuint attribindex, GLuint bindingindex); + GLAPI void APIENTRY glVertexArrayAttribFormat( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLboolean normalized, + GLuint relativeoffset + ); + GLAPI void APIENTRY + glVertexArrayAttribIFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + GLAPI void APIENTRY + glVertexArrayAttribLFormat(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + GLAPI void APIENTRY glVertexArrayBindingDivisor(GLuint vaobj, GLuint bindingindex, GLuint divisor); + GLAPI void APIENTRY glGetVertexArrayiv(GLuint vaobj, GLenum pname, GLint* param); + GLAPI void APIENTRY glGetVertexArrayIndexediv(GLuint vaobj, GLuint index, GLenum pname, GLint* param); + GLAPI void APIENTRY glGetVertexArrayIndexed64iv(GLuint vaobj, GLuint index, GLenum pname, GLint64* param); + GLAPI void APIENTRY glCreateSamplers(GLsizei n, GLuint* samplers); + GLAPI void APIENTRY glCreateProgramPipelines(GLsizei n, GLuint* pipelines); + GLAPI void APIENTRY glCreateQueries(GLenum target, GLsizei n, GLuint* ids); + GLAPI void APIENTRY glGetQueryBufferObjecti64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + GLAPI void APIENTRY glGetQueryBufferObjectiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + GLAPI void APIENTRY glGetQueryBufferObjectui64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + GLAPI void APIENTRY glGetQueryBufferObjectuiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset); + GLAPI void APIENTRY glMemoryBarrierByRegion(GLbitfield barriers); + GLAPI void APIENTRY glGetTextureSubImage( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + GLsizei bufSize, + void* pixels + ); + GLAPI void APIENTRY glGetCompressedTextureSubImage( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLsizei bufSize, + void* pixels + ); + GLAPI GLenum APIENTRY glGetGraphicsResetStatus(void); + GLAPI void APIENTRY glGetnCompressedTexImage(GLenum target, GLint lod, GLsizei bufSize, void* pixels); + GLAPI void APIENTRY + glGetnTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* pixels); + GLAPI void APIENTRY glGetnUniformdv(GLuint program, GLint location, GLsizei bufSize, GLdouble* params); + GLAPI void APIENTRY glGetnUniformfv(GLuint program, GLint location, GLsizei bufSize, GLfloat* params); + GLAPI void APIENTRY glGetnUniformiv(GLuint program, GLint location, GLsizei bufSize, GLint* params); + GLAPI void APIENTRY glGetnUniformuiv(GLuint program, GLint location, GLsizei bufSize, GLuint* params); + GLAPI void APIENTRY glReadnPixels( + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + GLsizei bufSize, + void* data + ); + GLAPI void APIENTRY glGetnMapdv(GLenum target, GLenum query, GLsizei bufSize, GLdouble* v); + GLAPI void APIENTRY glGetnMapfv(GLenum target, GLenum query, GLsizei bufSize, GLfloat* v); + GLAPI void APIENTRY glGetnMapiv(GLenum target, GLenum query, GLsizei bufSize, GLint* v); + GLAPI void APIENTRY glGetnPixelMapfv(GLenum map, GLsizei bufSize, GLfloat* values); + GLAPI void APIENTRY glGetnPixelMapuiv(GLenum map, GLsizei bufSize, GLuint* values); + GLAPI void APIENTRY glGetnPixelMapusv(GLenum map, GLsizei bufSize, GLushort* values); + GLAPI void APIENTRY glGetnPolygonStipple(GLsizei bufSize, GLubyte* pattern); + GLAPI void APIENTRY glGetnColorTable(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table); + GLAPI void APIENTRY + glGetnConvolutionFilter(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image); + GLAPI void APIENTRY glGetnSeparableFilter( + GLenum target, + GLenum format, + GLenum type, + GLsizei rowBufSize, + void* row, + GLsizei columnBufSize, + void* column, + void* span + ); + GLAPI void APIENTRY + glGetnHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); + GLAPI void APIENTRY + glGetnMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); + GLAPI void APIENTRY glTextureBarrier(void); +#endif +#endif /* GL_VERSION_4_5 */ + +#ifndef GL_VERSION_4_6 +#define GL_VERSION_4_6 1 +#define GL_SHADER_BINARY_FORMAT_SPIR_V 0x9551 +#define GL_SPIR_V_BINARY 0x9552 +#define GL_PARAMETER_BUFFER 0x80EE +#define GL_PARAMETER_BUFFER_BINDING 0x80EF +#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x00000008 +#define GL_VERTICES_SUBMITTED 0x82EE +#define GL_PRIMITIVES_SUBMITTED 0x82EF +#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0 +#define GL_TESS_CONTROL_SHADER_PATCHES 0x82F1 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2 +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3 +#define GL_FRAGMENT_SHADER_INVOCATIONS 0x82F4 +#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5 +#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6 +#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7 +#define GL_POLYGON_OFFSET_CLAMP 0x8E1B +#define GL_SPIR_V_EXTENSIONS 0x9553 +#define GL_NUM_SPIR_V_EXTENSIONS 0x9554 +#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF +#define GL_TRANSFORM_FEEDBACK_OVERFLOW 0x82EC +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED + typedef void(APIENTRYP PFNGLSPECIALIZESHADERPROC)( + GLuint shader, + const GLchar* pEntryPoint, + GLuint numSpecializationConstants, + const GLuint* pConstantIndex, + const GLuint* pConstantValue + ); + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)( + GLenum mode, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)( + GLenum mode, + GLenum type, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC)(GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glSpecializeShader( + GLuint shader, + const GLchar* pEntryPoint, + GLuint numSpecializationConstants, + const GLuint* pConstantIndex, + const GLuint* pConstantValue + ); + GLAPI void APIENTRY glMultiDrawArraysIndirectCount( + GLenum mode, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); + GLAPI void APIENTRY glMultiDrawElementsIndirectCount( + GLenum mode, + GLenum type, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); + GLAPI void APIENTRY glPolygonOffsetClamp(GLfloat factor, GLfloat units, GLfloat clamp); +#endif +#endif /* GL_VERSION_4_6 */ + +#ifndef GL_ARB_ES2_compatibility +#define GL_ARB_ES2_compatibility 1 +#endif /* GL_ARB_ES2_compatibility */ + +#ifndef GL_ARB_ES3_1_compatibility +#define GL_ARB_ES3_1_compatibility 1 +#endif /* GL_ARB_ES3_1_compatibility */ + +#ifndef GL_ARB_ES3_2_compatibility +#define GL_ARB_ES3_2_compatibility 1 +#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE +#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381 +#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382 + typedef void(APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXARBPROC)( + GLfloat minX, + GLfloat minY, + GLfloat minZ, + GLfloat minW, + GLfloat maxX, + GLfloat maxY, + GLfloat maxZ, + GLfloat maxW + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPrimitiveBoundingBoxARB( + GLfloat minX, + GLfloat minY, + GLfloat minZ, + GLfloat minW, + GLfloat maxX, + GLfloat maxY, + GLfloat maxZ, + GLfloat maxW + ); +#endif +#endif /* GL_ARB_ES3_2_compatibility */ + +#ifndef GL_ARB_ES3_compatibility +#define GL_ARB_ES3_compatibility 1 +#endif /* GL_ARB_ES3_compatibility */ + +#ifndef GL_ARB_arrays_of_arrays +#define GL_ARB_arrays_of_arrays 1 +#endif /* GL_ARB_arrays_of_arrays */ + +#ifndef GL_ARB_base_instance +#define GL_ARB_base_instance 1 +#endif /* GL_ARB_base_instance */ + +#ifndef GL_ARB_bindless_texture +#define GL_ARB_bindless_texture 1 + typedef khronos_uint64_t GLuint64EXT; +#define GL_UNSIGNED_INT64_ARB 0x140F + typedef GLuint64(APIENTRYP PFNGLGETTEXTUREHANDLEARBPROC)(GLuint texture); + typedef GLuint64(APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEARBPROC)(GLuint texture, GLuint sampler); + typedef void(APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle); + typedef void(APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)(GLuint64 handle); + typedef GLuint64(APIENTRYP PFNGLGETIMAGEHANDLEARBPROC)( + GLuint texture, + GLint level, + GLboolean layered, + GLint layer, + GLenum format + ); + typedef void(APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle, GLenum access); + typedef void(APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)(GLuint64 handle); + typedef void(APIENTRYP PFNGLUNIFORMHANDLEUI64ARBPROC)(GLint location, GLuint64 value); + typedef void(APIENTRYP PFNGLUNIFORMHANDLEUI64VARBPROC)(GLint location, GLsizei count, const GLuint64* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)(GLuint program, GLint location, GLuint64 value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64* values + ); + typedef GLboolean(APIENTRYP PFNGLISTEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle); + typedef GLboolean(APIENTRYP PFNGLISIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1UI64ARBPROC)(GLuint index, GLuint64EXT x); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1UI64VARBPROC)(GLuint index, const GLuint64EXT* v); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBLUI64VARBPROC)(GLuint index, GLenum pname, GLuint64EXT* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLuint64 APIENTRY glGetTextureHandleARB(GLuint texture); + GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleARB(GLuint texture, GLuint sampler); + GLAPI void APIENTRY glMakeTextureHandleResidentARB(GLuint64 handle); + GLAPI void APIENTRY glMakeTextureHandleNonResidentARB(GLuint64 handle); + GLAPI GLuint64 APIENTRY + glGetImageHandleARB(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); + GLAPI void APIENTRY glMakeImageHandleResidentARB(GLuint64 handle, GLenum access); + GLAPI void APIENTRY glMakeImageHandleNonResidentARB(GLuint64 handle); + GLAPI void APIENTRY glUniformHandleui64ARB(GLint location, GLuint64 value); + GLAPI void APIENTRY glUniformHandleui64vARB(GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glProgramUniformHandleui64ARB(GLuint program, GLint location, GLuint64 value); + GLAPI void APIENTRY + glProgramUniformHandleui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64* values); + GLAPI GLboolean APIENTRY glIsTextureHandleResidentARB(GLuint64 handle); + GLAPI GLboolean APIENTRY glIsImageHandleResidentARB(GLuint64 handle); + GLAPI void APIENTRY glVertexAttribL1ui64ARB(GLuint index, GLuint64EXT x); + GLAPI void APIENTRY glVertexAttribL1ui64vARB(GLuint index, const GLuint64EXT* v); + GLAPI void APIENTRY glGetVertexAttribLui64vARB(GLuint index, GLenum pname, GLuint64EXT* params); +#endif +#endif /* GL_ARB_bindless_texture */ + +#ifndef GL_ARB_blend_func_extended +#define GL_ARB_blend_func_extended 1 +#endif /* GL_ARB_blend_func_extended */ + +#ifndef GL_ARB_buffer_storage +#define GL_ARB_buffer_storage 1 +#endif /* GL_ARB_buffer_storage */ + +#ifndef GL_ARB_cl_event +#define GL_ARB_cl_event 1 + struct _cl_context; + struct _cl_event; +#define GL_SYNC_CL_EVENT_ARB 0x8240 +#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 + typedef GLsync(APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC)( + struct _cl_context* context, + struct _cl_event* event, + GLbitfield flags + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLsync APIENTRY + glCreateSyncFromCLeventARB(struct _cl_context* context, struct _cl_event* event, GLbitfield flags); +#endif +#endif /* GL_ARB_cl_event */ + +#ifndef GL_ARB_clear_buffer_object +#define GL_ARB_clear_buffer_object 1 +#endif /* GL_ARB_clear_buffer_object */ + +#ifndef GL_ARB_clear_texture +#define GL_ARB_clear_texture 1 +#endif /* GL_ARB_clear_texture */ + +#ifndef GL_ARB_clip_control +#define GL_ARB_clip_control 1 +#endif /* GL_ARB_clip_control */ + +#ifndef GL_ARB_color_buffer_float +#define GL_ARB_color_buffer_float 1 +#define GL_RGBA_FLOAT_MODE_ARB 0x8820 +#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A +#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B +#define GL_CLAMP_READ_COLOR_ARB 0x891C +#define GL_FIXED_ONLY_ARB 0x891D + typedef void(APIENTRYP PFNGLCLAMPCOLORARBPROC)(GLenum target, GLenum clamp); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glClampColorARB(GLenum target, GLenum clamp); +#endif +#endif /* GL_ARB_color_buffer_float */ + +#ifndef GL_ARB_compatibility +#define GL_ARB_compatibility 1 +#endif /* GL_ARB_compatibility */ + +#ifndef GL_ARB_compressed_texture_pixel_storage +#define GL_ARB_compressed_texture_pixel_storage 1 +#endif /* GL_ARB_compressed_texture_pixel_storage */ + +#ifndef GL_ARB_compute_shader +#define GL_ARB_compute_shader 1 +#endif /* GL_ARB_compute_shader */ + +#ifndef GL_ARB_compute_variable_group_size +#define GL_ARB_compute_variable_group_size 1 +#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344 +#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB +#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345 +#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF + typedef void(APIENTRYP PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)( + GLuint num_groups_x, + GLuint num_groups_y, + GLuint num_groups_z, + GLuint group_size_x, + GLuint group_size_y, + GLuint group_size_z + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDispatchComputeGroupSizeARB( + GLuint num_groups_x, + GLuint num_groups_y, + GLuint num_groups_z, + GLuint group_size_x, + GLuint group_size_y, + GLuint group_size_z + ); +#endif +#endif /* GL_ARB_compute_variable_group_size */ + +#ifndef GL_ARB_conditional_render_inverted +#define GL_ARB_conditional_render_inverted 1 +#endif /* GL_ARB_conditional_render_inverted */ + +#ifndef GL_ARB_conservative_depth +#define GL_ARB_conservative_depth 1 +#endif /* GL_ARB_conservative_depth */ + +#ifndef GL_ARB_copy_buffer +#define GL_ARB_copy_buffer 1 +#endif /* GL_ARB_copy_buffer */ + +#ifndef GL_ARB_copy_image +#define GL_ARB_copy_image 1 +#endif /* GL_ARB_copy_image */ + +#ifndef GL_ARB_cull_distance +#define GL_ARB_cull_distance 1 +#endif /* GL_ARB_cull_distance */ + +#ifndef GL_ARB_debug_output +#define GL_ARB_debug_output 1 + typedef void(APIENTRY* GLDEBUGPROCARB)( + GLenum source, + GLenum type, + GLuint id, + GLenum severity, + GLsizei length, + const GLchar* message, + const void* userParam + ); +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 +#define GL_DEBUG_SOURCE_API_ARB 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A +#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B +#define GL_DEBUG_TYPE_ERROR_ARB 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 +#define GL_DEBUG_TYPE_OTHER_ARB 0x8251 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 +#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 + typedef void(APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC)( + GLenum source, + GLenum type, + GLenum severity, + GLsizei count, + const GLuint* ids, + GLboolean enabled + ); + typedef void(APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC)( + GLenum source, + GLenum type, + GLuint id, + GLenum severity, + GLsizei length, + const GLchar* buf + ); + typedef void(APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC)(GLDEBUGPROCARB callback, const void* userParam); + typedef GLuint(APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC)( + GLuint count, + GLsizei bufSize, + GLenum* sources, + GLenum* types, + GLuint* ids, + GLenum* severities, + GLsizei* lengths, + GLchar* messageLog + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDebugMessageControlARB( + GLenum source, + GLenum type, + GLenum severity, + GLsizei count, + const GLuint* ids, + GLboolean enabled + ); + GLAPI void APIENTRY + glDebugMessageInsertARB(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf); + GLAPI void APIENTRY glDebugMessageCallbackARB(GLDEBUGPROCARB callback, const void* userParam); + GLAPI GLuint APIENTRY glGetDebugMessageLogARB( + GLuint count, + GLsizei bufSize, + GLenum* sources, + GLenum* types, + GLuint* ids, + GLenum* severities, + GLsizei* lengths, + GLchar* messageLog + ); +#endif +#endif /* GL_ARB_debug_output */ + +#ifndef GL_ARB_depth_buffer_float +#define GL_ARB_depth_buffer_float 1 +#endif /* GL_ARB_depth_buffer_float */ + +#ifndef GL_ARB_depth_clamp +#define GL_ARB_depth_clamp 1 +#endif /* GL_ARB_depth_clamp */ + +#ifndef GL_ARB_depth_texture +#define GL_ARB_depth_texture 1 +#define GL_DEPTH_COMPONENT16_ARB 0x81A5 +#define GL_DEPTH_COMPONENT24_ARB 0x81A6 +#define GL_DEPTH_COMPONENT32_ARB 0x81A7 +#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A +#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B +#endif /* GL_ARB_depth_texture */ + +#ifndef GL_ARB_derivative_control +#define GL_ARB_derivative_control 1 +#endif /* GL_ARB_derivative_control */ + +#ifndef GL_ARB_direct_state_access +#define GL_ARB_direct_state_access 1 +#endif /* GL_ARB_direct_state_access */ + +#ifndef GL_ARB_draw_buffers +#define GL_ARB_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 +#define GL_DRAW_BUFFER0_ARB 0x8825 +#define GL_DRAW_BUFFER1_ARB 0x8826 +#define GL_DRAW_BUFFER2_ARB 0x8827 +#define GL_DRAW_BUFFER3_ARB 0x8828 +#define GL_DRAW_BUFFER4_ARB 0x8829 +#define GL_DRAW_BUFFER5_ARB 0x882A +#define GL_DRAW_BUFFER6_ARB 0x882B +#define GL_DRAW_BUFFER7_ARB 0x882C +#define GL_DRAW_BUFFER8_ARB 0x882D +#define GL_DRAW_BUFFER9_ARB 0x882E +#define GL_DRAW_BUFFER10_ARB 0x882F +#define GL_DRAW_BUFFER11_ARB 0x8830 +#define GL_DRAW_BUFFER12_ARB 0x8831 +#define GL_DRAW_BUFFER13_ARB 0x8832 +#define GL_DRAW_BUFFER14_ARB 0x8833 +#define GL_DRAW_BUFFER15_ARB 0x8834 + typedef void(APIENTRYP PFNGLDRAWBUFFERSARBPROC)(GLsizei n, const GLenum* bufs); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawBuffersARB(GLsizei n, const GLenum* bufs); +#endif +#endif /* GL_ARB_draw_buffers */ + +#ifndef GL_ARB_draw_buffers_blend +#define GL_ARB_draw_buffers_blend 1 + typedef void(APIENTRYP PFNGLBLENDEQUATIONIARBPROC)(GLuint buf, GLenum mode); + typedef void(APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + typedef void(APIENTRYP PFNGLBLENDFUNCIARBPROC)(GLuint buf, GLenum src, GLenum dst); + typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC)( + GLuint buf, + GLenum srcRGB, + GLenum dstRGB, + GLenum srcAlpha, + GLenum dstAlpha + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBlendEquationiARB(GLuint buf, GLenum mode); + GLAPI void APIENTRY glBlendEquationSeparateiARB(GLuint buf, GLenum modeRGB, GLenum modeAlpha); + GLAPI void APIENTRY glBlendFunciARB(GLuint buf, GLenum src, GLenum dst); + GLAPI void APIENTRY + glBlendFuncSeparateiARB(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +#endif +#endif /* GL_ARB_draw_buffers_blend */ + +#ifndef GL_ARB_draw_elements_base_vertex +#define GL_ARB_draw_elements_base_vertex 1 +#endif /* GL_ARB_draw_elements_base_vertex */ + +#ifndef GL_ARB_draw_indirect +#define GL_ARB_draw_indirect 1 +#endif /* GL_ARB_draw_indirect */ + +#ifndef GL_ARB_draw_instanced +#define GL_ARB_draw_instanced 1 + typedef void(APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC)( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawArraysInstancedARB(GLenum mode, GLint first, GLsizei count, GLsizei primcount); + GLAPI void APIENTRY + glDrawElementsInstancedARB(GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); +#endif +#endif /* GL_ARB_draw_instanced */ + +#ifndef GL_ARB_enhanced_layouts +#define GL_ARB_enhanced_layouts 1 +#endif /* GL_ARB_enhanced_layouts */ + +#ifndef GL_ARB_explicit_attrib_location +#define GL_ARB_explicit_attrib_location 1 +#endif /* GL_ARB_explicit_attrib_location */ + +#ifndef GL_ARB_explicit_uniform_location +#define GL_ARB_explicit_uniform_location 1 +#endif /* GL_ARB_explicit_uniform_location */ + +#ifndef GL_ARB_fragment_coord_conventions +#define GL_ARB_fragment_coord_conventions 1 +#endif /* GL_ARB_fragment_coord_conventions */ + +#ifndef GL_ARB_fragment_layer_viewport +#define GL_ARB_fragment_layer_viewport 1 +#endif /* GL_ARB_fragment_layer_viewport */ + +#ifndef GL_ARB_fragment_program +#define GL_ARB_fragment_program 1 +#define GL_FRAGMENT_PROGRAM_ARB 0x8804 +#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 +#define GL_PROGRAM_LENGTH_ARB 0x8627 +#define GL_PROGRAM_FORMAT_ARB 0x8876 +#define GL_PROGRAM_BINDING_ARB 0x8677 +#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 +#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 +#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 +#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 +#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 +#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 +#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 +#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 +#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 +#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 +#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA +#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB +#define GL_PROGRAM_ATTRIBS_ARB 0x88AC +#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD +#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE +#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF +#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 +#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 +#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 +#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 +#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 +#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 +#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 +#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 +#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A +#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B +#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C +#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D +#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E +#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F +#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 +#define GL_PROGRAM_STRING_ARB 0x8628 +#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B +#define GL_CURRENT_MATRIX_ARB 0x8641 +#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 +#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 +#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F +#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E +#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 +#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 +#define GL_MATRIX0_ARB 0x88C0 +#define GL_MATRIX1_ARB 0x88C1 +#define GL_MATRIX2_ARB 0x88C2 +#define GL_MATRIX3_ARB 0x88C3 +#define GL_MATRIX4_ARB 0x88C4 +#define GL_MATRIX5_ARB 0x88C5 +#define GL_MATRIX6_ARB 0x88C6 +#define GL_MATRIX7_ARB 0x88C7 +#define GL_MATRIX8_ARB 0x88C8 +#define GL_MATRIX9_ARB 0x88C9 +#define GL_MATRIX10_ARB 0x88CA +#define GL_MATRIX11_ARB 0x88CB +#define GL_MATRIX12_ARB 0x88CC +#define GL_MATRIX13_ARB 0x88CD +#define GL_MATRIX14_ARB 0x88CE +#define GL_MATRIX15_ARB 0x88CF +#define GL_MATRIX16_ARB 0x88D0 +#define GL_MATRIX17_ARB 0x88D1 +#define GL_MATRIX18_ARB 0x88D2 +#define GL_MATRIX19_ARB 0x88D3 +#define GL_MATRIX20_ARB 0x88D4 +#define GL_MATRIX21_ARB 0x88D5 +#define GL_MATRIX22_ARB 0x88D6 +#define GL_MATRIX23_ARB 0x88D7 +#define GL_MATRIX24_ARB 0x88D8 +#define GL_MATRIX25_ARB 0x88D9 +#define GL_MATRIX26_ARB 0x88DA +#define GL_MATRIX27_ARB 0x88DB +#define GL_MATRIX28_ARB 0x88DC +#define GL_MATRIX29_ARB 0x88DD +#define GL_MATRIX30_ARB 0x88DE +#define GL_MATRIX31_ARB 0x88DF + typedef void(APIENTRYP PFNGLPROGRAMSTRINGARBPROC)(GLenum target, GLenum format, GLsizei len, const void* string); + typedef void(APIENTRYP PFNGLBINDPROGRAMARBPROC)(GLenum target, GLuint program); + typedef void(APIENTRYP PFNGLDELETEPROGRAMSARBPROC)(GLsizei n, const GLuint* programs); + typedef void(APIENTRYP PFNGLGENPROGRAMSARBPROC)(GLsizei n, GLuint* programs); + typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC)( + GLenum target, + GLuint index, + GLdouble x, + GLdouble y, + GLdouble z, + GLdouble w + ); + typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC)(GLenum target, GLuint index, const GLdouble* params); + typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC)( + GLenum target, + GLuint index, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w + ); + typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC)(GLenum target, GLuint index, const GLfloat* params); + typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC)( + GLenum target, + GLuint index, + GLdouble x, + GLdouble y, + GLdouble z, + GLdouble w + ); + typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)(GLenum target, GLuint index, const GLdouble* params); + typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC)( + GLenum target, + GLuint index, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w + ); + typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)(GLenum target, GLuint index, const GLfloat* params); + typedef void(APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC)(GLenum target, GLuint index, GLdouble* params); + typedef void(APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC)(GLenum target, GLuint index, GLfloat* params); + typedef void(APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)(GLenum target, GLuint index, GLdouble* params); + typedef void(APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)(GLenum target, GLuint index, GLfloat* params); + typedef void(APIENTRYP PFNGLGETPROGRAMIVARBPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC)(GLenum target, GLenum pname, void* string); + typedef GLboolean(APIENTRYP PFNGLISPROGRAMARBPROC)(GLuint program); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glProgramStringARB(GLenum target, GLenum format, GLsizei len, const void* string); + GLAPI void APIENTRY glBindProgramARB(GLenum target, GLuint program); + GLAPI void APIENTRY glDeleteProgramsARB(GLsizei n, const GLuint* programs); + GLAPI void APIENTRY glGenProgramsARB(GLsizei n, GLuint* programs); + GLAPI void APIENTRY + glProgramEnvParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glProgramEnvParameter4dvARB(GLenum target, GLuint index, const GLdouble* params); + GLAPI void APIENTRY + glProgramEnvParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + GLAPI void APIENTRY glProgramEnvParameter4fvARB(GLenum target, GLuint index, const GLfloat* params); + GLAPI void APIENTRY + glProgramLocalParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glProgramLocalParameter4dvARB(GLenum target, GLuint index, const GLdouble* params); + GLAPI void APIENTRY + glProgramLocalParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + GLAPI void APIENTRY glProgramLocalParameter4fvARB(GLenum target, GLuint index, const GLfloat* params); + GLAPI void APIENTRY glGetProgramEnvParameterdvARB(GLenum target, GLuint index, GLdouble* params); + GLAPI void APIENTRY glGetProgramEnvParameterfvARB(GLenum target, GLuint index, GLfloat* params); + GLAPI void APIENTRY glGetProgramLocalParameterdvARB(GLenum target, GLuint index, GLdouble* params); + GLAPI void APIENTRY glGetProgramLocalParameterfvARB(GLenum target, GLuint index, GLfloat* params); + GLAPI void APIENTRY glGetProgramivARB(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetProgramStringARB(GLenum target, GLenum pname, void* string); + GLAPI GLboolean APIENTRY glIsProgramARB(GLuint program); +#endif +#endif /* GL_ARB_fragment_program */ + +#ifndef GL_ARB_fragment_program_shadow +#define GL_ARB_fragment_program_shadow 1 +#endif /* GL_ARB_fragment_program_shadow */ + +#ifndef GL_ARB_fragment_shader +#define GL_ARB_fragment_shader 1 +#define GL_FRAGMENT_SHADER_ARB 0x8B30 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B +#endif /* GL_ARB_fragment_shader */ + +#ifndef GL_ARB_fragment_shader_interlock +#define GL_ARB_fragment_shader_interlock 1 +#endif /* GL_ARB_fragment_shader_interlock */ + +#ifndef GL_ARB_framebuffer_no_attachments +#define GL_ARB_framebuffer_no_attachments 1 +#endif /* GL_ARB_framebuffer_no_attachments */ + +#ifndef GL_ARB_framebuffer_object +#define GL_ARB_framebuffer_object 1 +#endif /* GL_ARB_framebuffer_object */ + +#ifndef GL_ARB_framebuffer_sRGB +#define GL_ARB_framebuffer_sRGB 1 +#endif /* GL_ARB_framebuffer_sRGB */ + +#ifndef GL_ARB_geometry_shader4 +#define GL_ARB_geometry_shader4 1 +#define GL_LINES_ADJACENCY_ARB 0x000A +#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B +#define GL_TRIANGLES_ADJACENCY_ARB 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D +#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 +#define GL_GEOMETRY_SHADER_ARB 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 + typedef void(APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC)(GLuint program, GLenum pname, GLint value); + typedef void(APIENTRYP + PFNGLFRAMEBUFFERTEXTUREARBPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)( + GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer + ); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)( + GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLenum face + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glProgramParameteriARB(GLuint program, GLenum pname, GLint value); + GLAPI void APIENTRY glFramebufferTextureARB(GLenum target, GLenum attachment, GLuint texture, GLint level); + GLAPI void APIENTRY + glFramebufferTextureLayerARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); + GLAPI void APIENTRY + glFramebufferTextureFaceARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#endif +#endif /* GL_ARB_geometry_shader4 */ + +#ifndef GL_ARB_get_program_binary +#define GL_ARB_get_program_binary 1 +#endif /* GL_ARB_get_program_binary */ + +#ifndef GL_ARB_get_texture_sub_image +#define GL_ARB_get_texture_sub_image 1 +#endif /* GL_ARB_get_texture_sub_image */ + +#ifndef GL_ARB_gl_spirv +#define GL_ARB_gl_spirv 1 +#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551 +#define GL_SPIR_V_BINARY_ARB 0x9552 + typedef void(APIENTRYP PFNGLSPECIALIZESHADERARBPROC)( + GLuint shader, + const GLchar* pEntryPoint, + GLuint numSpecializationConstants, + const GLuint* pConstantIndex, + const GLuint* pConstantValue + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glSpecializeShaderARB( + GLuint shader, + const GLchar* pEntryPoint, + GLuint numSpecializationConstants, + const GLuint* pConstantIndex, + const GLuint* pConstantValue + ); +#endif +#endif /* GL_ARB_gl_spirv */ + +#ifndef GL_ARB_gpu_shader5 +#define GL_ARB_gpu_shader5 1 +#endif /* GL_ARB_gpu_shader5 */ + +#ifndef GL_ARB_gpu_shader_fp64 +#define GL_ARB_gpu_shader_fp64 1 +#endif /* GL_ARB_gpu_shader_fp64 */ + +#ifndef GL_ARB_gpu_shader_int64 +#define GL_ARB_gpu_shader_int64 1 +#define GL_INT64_ARB 0x140E +#define GL_INT64_VEC2_ARB 0x8FE9 +#define GL_INT64_VEC3_ARB 0x8FEA +#define GL_INT64_VEC4_ARB 0x8FEB +#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7 + typedef void(APIENTRYP PFNGLUNIFORM1I64ARBPROC)(GLint location, GLint64 x); + typedef void(APIENTRYP PFNGLUNIFORM2I64ARBPROC)(GLint location, GLint64 x, GLint64 y); + typedef void(APIENTRYP PFNGLUNIFORM3I64ARBPROC)(GLint location, GLint64 x, GLint64 y, GLint64 z); + typedef void(APIENTRYP PFNGLUNIFORM4I64ARBPROC)(GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); + typedef void(APIENTRYP PFNGLUNIFORM1I64VARBPROC)(GLint location, GLsizei count, const GLint64* value); + typedef void(APIENTRYP PFNGLUNIFORM2I64VARBPROC)(GLint location, GLsizei count, const GLint64* value); + typedef void(APIENTRYP PFNGLUNIFORM3I64VARBPROC)(GLint location, GLsizei count, const GLint64* value); + typedef void(APIENTRYP PFNGLUNIFORM4I64VARBPROC)(GLint location, GLsizei count, const GLint64* value); + typedef void(APIENTRYP PFNGLUNIFORM1UI64ARBPROC)(GLint location, GLuint64 x); + typedef void(APIENTRYP PFNGLUNIFORM2UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y); + typedef void(APIENTRYP PFNGLUNIFORM3UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z); + typedef void(APIENTRYP PFNGLUNIFORM4UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); + typedef void(APIENTRYP PFNGLUNIFORM1UI64VARBPROC)(GLint location, GLsizei count, const GLuint64* value); + typedef void(APIENTRYP PFNGLUNIFORM2UI64VARBPROC)(GLint location, GLsizei count, const GLuint64* value); + typedef void(APIENTRYP PFNGLUNIFORM3UI64VARBPROC)(GLint location, GLsizei count, const GLuint64* value); + typedef void(APIENTRYP PFNGLUNIFORM4UI64VARBPROC)(GLint location, GLsizei count, const GLuint64* value); + typedef void(APIENTRYP PFNGLGETUNIFORMI64VARBPROC)(GLuint program, GLint location, GLint64* params); + typedef void(APIENTRYP PFNGLGETUNIFORMUI64VARBPROC)(GLuint program, GLint location, GLuint64* params); + typedef void(APIENTRYP + PFNGLGETNUNIFORMI64VARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLint64* params); + typedef void(APIENTRYP + PFNGLGETNUNIFORMUI64VARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint64* params); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1I64ARBPROC)(GLuint program, GLint location, GLint64 x); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2I64ARBPROC)(GLuint program, GLint location, GLint64 x, GLint64 y); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3I64ARBPROC)(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4I64ARBPROC)( + GLuint program, + GLint location, + GLint64 x, + GLint64 y, + GLint64 z, + GLint64 w + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1I64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2I64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3I64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4I64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UI64ARBPROC)(GLuint program, GLint location, GLuint64 x); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UI64ARBPROC)(GLuint program, GLint location, GLuint64 x, GLuint64 y); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UI64ARBPROC)( + GLuint program, + GLint location, + GLuint64 x, + GLuint64 y, + GLuint64 z + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UI64ARBPROC)( + GLuint program, + GLint location, + GLuint64 x, + GLuint64 y, + GLuint64 z, + GLuint64 w + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UI64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UI64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UI64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UI64VARBPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64* value + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glUniform1i64ARB(GLint location, GLint64 x); + GLAPI void APIENTRY glUniform2i64ARB(GLint location, GLint64 x, GLint64 y); + GLAPI void APIENTRY glUniform3i64ARB(GLint location, GLint64 x, GLint64 y, GLint64 z); + GLAPI void APIENTRY glUniform4i64ARB(GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); + GLAPI void APIENTRY glUniform1i64vARB(GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glUniform2i64vARB(GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glUniform3i64vARB(GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glUniform4i64vARB(GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glUniform1ui64ARB(GLint location, GLuint64 x); + GLAPI void APIENTRY glUniform2ui64ARB(GLint location, GLuint64 x, GLuint64 y); + GLAPI void APIENTRY glUniform3ui64ARB(GLint location, GLuint64 x, GLuint64 y, GLuint64 z); + GLAPI void APIENTRY glUniform4ui64ARB(GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); + GLAPI void APIENTRY glUniform1ui64vARB(GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glUniform2ui64vARB(GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glUniform3ui64vARB(GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glUniform4ui64vARB(GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glGetUniformi64vARB(GLuint program, GLint location, GLint64* params); + GLAPI void APIENTRY glGetUniformui64vARB(GLuint program, GLint location, GLuint64* params); + GLAPI void APIENTRY glGetnUniformi64vARB(GLuint program, GLint location, GLsizei bufSize, GLint64* params); + GLAPI void APIENTRY glGetnUniformui64vARB(GLuint program, GLint location, GLsizei bufSize, GLuint64* params); + GLAPI void APIENTRY glProgramUniform1i64ARB(GLuint program, GLint location, GLint64 x); + GLAPI void APIENTRY glProgramUniform2i64ARB(GLuint program, GLint location, GLint64 x, GLint64 y); + GLAPI void APIENTRY glProgramUniform3i64ARB(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z); + GLAPI void APIENTRY + glProgramUniform4i64ARB(GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w); + GLAPI void APIENTRY glProgramUniform1i64vARB(GLuint program, GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glProgramUniform2i64vARB(GLuint program, GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glProgramUniform3i64vARB(GLuint program, GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glProgramUniform4i64vARB(GLuint program, GLint location, GLsizei count, const GLint64* value); + GLAPI void APIENTRY glProgramUniform1ui64ARB(GLuint program, GLint location, GLuint64 x); + GLAPI void APIENTRY glProgramUniform2ui64ARB(GLuint program, GLint location, GLuint64 x, GLuint64 y); + GLAPI void APIENTRY glProgramUniform3ui64ARB(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z); + GLAPI void APIENTRY + glProgramUniform4ui64ARB(GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w); + GLAPI void APIENTRY glProgramUniform1ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glProgramUniform2ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glProgramUniform3ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glProgramUniform4ui64vARB(GLuint program, GLint location, GLsizei count, const GLuint64* value); +#endif +#endif /* GL_ARB_gpu_shader_int64 */ + +#ifndef GL_ARB_half_float_pixel +#define GL_ARB_half_float_pixel 1 + typedef khronos_uint16_t GLhalfARB; +#define GL_HALF_FLOAT_ARB 0x140B +#endif /* GL_ARB_half_float_pixel */ + +#ifndef GL_ARB_half_float_vertex +#define GL_ARB_half_float_vertex 1 +#endif /* GL_ARB_half_float_vertex */ + +#ifndef GL_ARB_imaging +#define GL_ARB_imaging 1 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +#define GL_CONSTANT_BORDER 0x8151 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 + typedef void(APIENTRYP PFNGLCOLORTABLEPROC)( + GLenum target, + GLenum internalformat, + GLsizei width, + GLenum format, + GLenum type, + const void* table + ); + typedef void(APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP + PFNGLCOPYCOLORTABLEPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + typedef void(APIENTRYP PFNGLGETCOLORTABLEPROC)(GLenum target, GLenum format, GLenum type, void* table); + typedef void(APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLCOLORSUBTABLEPROC)( + GLenum target, + GLsizei start, + GLsizei count, + GLenum format, + GLenum type, + const void* data + ); + typedef void(APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + typedef void(APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC)( + GLenum target, + GLenum internalformat, + GLsizei width, + GLenum format, + GLenum type, + const void* image + ); + typedef void(APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC)( + GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* image + ); + typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat params); + typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC)(GLenum target, GLenum pname, GLint params); + typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC)( + GLenum target, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width + ); + typedef void(APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC)( + GLenum target, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC)(GLenum target, GLenum format, GLenum type, void* image); + typedef void(APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETSEPARABLEFILTERPROC)( + GLenum target, + GLenum format, + GLenum type, + void* row, + void* column, + void* span + ); + typedef void(APIENTRYP PFNGLSEPARABLEFILTER2DPROC)( + GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* row, + const void* column + ); + typedef void(APIENTRYP + PFNGLGETHISTOGRAMPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); + typedef void(APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP + PFNGLGETMINMAXPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); + typedef void(APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLHISTOGRAMPROC)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + typedef void(APIENTRYP PFNGLMINMAXPROC)(GLenum target, GLenum internalformat, GLboolean sink); + typedef void(APIENTRYP PFNGLRESETHISTOGRAMPROC)(GLenum target); + typedef void(APIENTRYP PFNGLRESETMINMAXPROC)(GLenum target); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void* table); + GLAPI void APIENTRY glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glColorTableParameteriv(GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + GLAPI void APIENTRY glGetColorTable(GLenum target, GLenum format, GLenum type, void* table); + GLAPI void APIENTRY glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetColorTableParameteriv(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY + glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void* data); + GLAPI void APIENTRY glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); + GLAPI void APIENTRY glConvolutionFilter1D( + GLenum target, + GLenum internalformat, + GLsizei width, + GLenum format, + GLenum type, + const void* image + ); + GLAPI void APIENTRY glConvolutionFilter2D( + GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* image + ); + GLAPI void APIENTRY glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); + GLAPI void APIENTRY glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glConvolutionParameteri(GLenum target, GLenum pname, GLint params); + GLAPI void APIENTRY glConvolutionParameteriv(GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY + glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + GLAPI void APIENTRY + glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + GLAPI void APIENTRY glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, void* image); + GLAPI void APIENTRY glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY + glGetSeparableFilter(GLenum target, GLenum format, GLenum type, void* row, void* column, void* span); + GLAPI void APIENTRY glSeparableFilter2D( + GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* row, + const void* column + ); + GLAPI void APIENTRY glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); + GLAPI void APIENTRY glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetHistogramParameteriv(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); + GLAPI void APIENTRY glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + GLAPI void APIENTRY glMinmax(GLenum target, GLenum internalformat, GLboolean sink); + GLAPI void APIENTRY glResetHistogram(GLenum target); + GLAPI void APIENTRY glResetMinmax(GLenum target); +#endif +#endif /* GL_ARB_imaging */ + +#ifndef GL_ARB_indirect_parameters +#define GL_ARB_indirect_parameters 1 +#define GL_PARAMETER_BUFFER_ARB 0x80EE +#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)( + GLenum mode, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)( + GLenum mode, + GLenum type, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMultiDrawArraysIndirectCountARB( + GLenum mode, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); + GLAPI void APIENTRY glMultiDrawElementsIndirectCountARB( + GLenum mode, + GLenum type, + const void* indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); +#endif +#endif /* GL_ARB_indirect_parameters */ + +#ifndef GL_ARB_instanced_arrays +#define GL_ARB_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE + typedef void(APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC)(GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glVertexAttribDivisorARB(GLuint index, GLuint divisor); +#endif +#endif /* GL_ARB_instanced_arrays */ + +#ifndef GL_ARB_internalformat_query +#define GL_ARB_internalformat_query 1 +#endif /* GL_ARB_internalformat_query */ + +#ifndef GL_ARB_internalformat_query2 +#define GL_ARB_internalformat_query2 1 +#define GL_SRGB_DECODE_ARB 0x8299 +#define GL_VIEW_CLASS_EAC_R11 0x9383 +#define GL_VIEW_CLASS_EAC_RG11 0x9384 +#define GL_VIEW_CLASS_ETC2_RGB 0x9385 +#define GL_VIEW_CLASS_ETC2_RGBA 0x9386 +#define GL_VIEW_CLASS_ETC2_EAC_RGBA 0x9387 +#define GL_VIEW_CLASS_ASTC_4x4_RGBA 0x9388 +#define GL_VIEW_CLASS_ASTC_5x4_RGBA 0x9389 +#define GL_VIEW_CLASS_ASTC_5x5_RGBA 0x938A +#define GL_VIEW_CLASS_ASTC_6x5_RGBA 0x938B +#define GL_VIEW_CLASS_ASTC_6x6_RGBA 0x938C +#define GL_VIEW_CLASS_ASTC_8x5_RGBA 0x938D +#define GL_VIEW_CLASS_ASTC_8x6_RGBA 0x938E +#define GL_VIEW_CLASS_ASTC_8x8_RGBA 0x938F +#define GL_VIEW_CLASS_ASTC_10x5_RGBA 0x9390 +#define GL_VIEW_CLASS_ASTC_10x6_RGBA 0x9391 +#define GL_VIEW_CLASS_ASTC_10x8_RGBA 0x9392 +#define GL_VIEW_CLASS_ASTC_10x10_RGBA 0x9393 +#define GL_VIEW_CLASS_ASTC_12x10_RGBA 0x9394 +#define GL_VIEW_CLASS_ASTC_12x12_RGBA 0x9395 +#endif /* GL_ARB_internalformat_query2 */ + +#ifndef GL_ARB_invalidate_subdata +#define GL_ARB_invalidate_subdata 1 +#endif /* GL_ARB_invalidate_subdata */ + +#ifndef GL_ARB_map_buffer_alignment +#define GL_ARB_map_buffer_alignment 1 +#endif /* GL_ARB_map_buffer_alignment */ + +#ifndef GL_ARB_map_buffer_range +#define GL_ARB_map_buffer_range 1 +#endif /* GL_ARB_map_buffer_range */ + +#ifndef GL_ARB_matrix_palette +#define GL_ARB_matrix_palette 1 +#define GL_MATRIX_PALETTE_ARB 0x8840 +#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 +#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 +#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 +#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 +#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 +#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 +#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 +#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 + typedef void(APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC)(GLint index); + typedef void(APIENTRYP PFNGLMATRIXINDEXUBVARBPROC)(GLint size, const GLubyte* indices); + typedef void(APIENTRYP PFNGLMATRIXINDEXUSVARBPROC)(GLint size, const GLushort* indices); + typedef void(APIENTRYP PFNGLMATRIXINDEXUIVARBPROC)(GLint size, const GLuint* indices); + typedef void(APIENTRYP + PFNGLMATRIXINDEXPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, const void* pointer); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glCurrentPaletteMatrixARB(GLint index); + GLAPI void APIENTRY glMatrixIndexubvARB(GLint size, const GLubyte* indices); + GLAPI void APIENTRY glMatrixIndexusvARB(GLint size, const GLushort* indices); + GLAPI void APIENTRY glMatrixIndexuivARB(GLint size, const GLuint* indices); + GLAPI void APIENTRY glMatrixIndexPointerARB(GLint size, GLenum type, GLsizei stride, const void* pointer); +#endif +#endif /* GL_ARB_matrix_palette */ + +#ifndef GL_ARB_multi_bind +#define GL_ARB_multi_bind 1 +#endif /* GL_ARB_multi_bind */ + +#ifndef GL_ARB_multi_draw_indirect +#define GL_ARB_multi_draw_indirect 1 +#endif /* GL_ARB_multi_draw_indirect */ + +#ifndef GL_ARB_multisample +#define GL_ARB_multisample 1 +#define GL_MULTISAMPLE_ARB 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F +#define GL_SAMPLE_COVERAGE_ARB 0x80A0 +#define GL_SAMPLE_BUFFERS_ARB 0x80A8 +#define GL_SAMPLES_ARB 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB +#define GL_MULTISAMPLE_BIT_ARB 0x20000000 + typedef void(APIENTRYP PFNGLSAMPLECOVERAGEARBPROC)(GLfloat value, GLboolean invert); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glSampleCoverageARB(GLfloat value, GLboolean invert); +#endif +#endif /* GL_ARB_multisample */ + +#ifndef GL_ARB_multitexture +#define GL_ARB_multitexture 1 +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31_ARB 0x84DF +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 + typedef void(APIENTRYP PFNGLACTIVETEXTUREARBPROC)(GLenum texture); + typedef void(APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC)(GLenum texture); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1DARBPROC)(GLenum target, GLdouble s); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC)(GLenum target, const GLdouble* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1FARBPROC)(GLenum target, GLfloat s); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC)(GLenum target, const GLfloat* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1IARBPROC)(GLenum target, GLint s); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC)(GLenum target, const GLint* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1SARBPROC)(GLenum target, GLshort s); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC)(GLenum target, const GLshort* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2DARBPROC)(GLenum target, GLdouble s, GLdouble t); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC)(GLenum target, const GLdouble* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2FARBPROC)(GLenum target, GLfloat s, GLfloat t); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC)(GLenum target, const GLfloat* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2IARBPROC)(GLenum target, GLint s, GLint t); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC)(GLenum target, const GLint* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2SARBPROC)(GLenum target, GLshort s, GLshort t); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC)(GLenum target, const GLshort* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3DARBPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC)(GLenum target, const GLdouble* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3FARBPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC)(GLenum target, const GLfloat* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3IARBPROC)(GLenum target, GLint s, GLint t, GLint r); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC)(GLenum target, const GLint* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3SARBPROC)(GLenum target, GLshort s, GLshort t, GLshort r); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC)(GLenum target, const GLshort* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4DARBPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC)(GLenum target, const GLdouble* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4FARBPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC)(GLenum target, const GLfloat* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4IARBPROC)(GLenum target, GLint s, GLint t, GLint r, GLint q); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC)(GLenum target, const GLint* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4SARBPROC)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC)(GLenum target, const GLshort* v); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glActiveTextureARB(GLenum texture); + GLAPI void APIENTRY glClientActiveTextureARB(GLenum texture); + GLAPI void APIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s); + GLAPI void APIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble* v); + GLAPI void APIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s); + GLAPI void APIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat* v); + GLAPI void APIENTRY glMultiTexCoord1iARB(GLenum target, GLint s); + GLAPI void APIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint* v); + GLAPI void APIENTRY glMultiTexCoord1sARB(GLenum target, GLshort s); + GLAPI void APIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort* v); + GLAPI void APIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t); + GLAPI void APIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble* v); + GLAPI void APIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t); + GLAPI void APIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat* v); + GLAPI void APIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t); + GLAPI void APIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint* v); + GLAPI void APIENTRY glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t); + GLAPI void APIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort* v); + GLAPI void APIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r); + GLAPI void APIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble* v); + GLAPI void APIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r); + GLAPI void APIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat* v); + GLAPI void APIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r); + GLAPI void APIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint* v); + GLAPI void APIENTRY glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r); + GLAPI void APIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort* v); + GLAPI void APIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); + GLAPI void APIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble* v); + GLAPI void APIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); + GLAPI void APIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat* v); + GLAPI void APIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q); + GLAPI void APIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint* v); + GLAPI void APIENTRY glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); + GLAPI void APIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort* v); +#endif +#endif /* GL_ARB_multitexture */ + +#ifndef GL_ARB_occlusion_query +#define GL_ARB_occlusion_query 1 +#define GL_QUERY_COUNTER_BITS_ARB 0x8864 +#define GL_CURRENT_QUERY_ARB 0x8865 +#define GL_QUERY_RESULT_ARB 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 +#define GL_SAMPLES_PASSED_ARB 0x8914 + typedef void(APIENTRYP PFNGLGENQUERIESARBPROC)(GLsizei n, GLuint* ids); + typedef void(APIENTRYP PFNGLDELETEQUERIESARBPROC)(GLsizei n, const GLuint* ids); + typedef GLboolean(APIENTRYP PFNGLISQUERYARBPROC)(GLuint id); + typedef void(APIENTRYP PFNGLBEGINQUERYARBPROC)(GLenum target, GLuint id); + typedef void(APIENTRYP PFNGLENDQUERYARBPROC)(GLenum target); + typedef void(APIENTRYP PFNGLGETQUERYIVARBPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC)(GLuint id, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC)(GLuint id, GLenum pname, GLuint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGenQueriesARB(GLsizei n, GLuint* ids); + GLAPI void APIENTRY glDeleteQueriesARB(GLsizei n, const GLuint* ids); + GLAPI GLboolean APIENTRY glIsQueryARB(GLuint id); + GLAPI void APIENTRY glBeginQueryARB(GLenum target, GLuint id); + GLAPI void APIENTRY glEndQueryARB(GLenum target); + GLAPI void APIENTRY glGetQueryivARB(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetQueryObjectivARB(GLuint id, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint* params); +#endif +#endif /* GL_ARB_occlusion_query */ + +#ifndef GL_ARB_occlusion_query2 +#define GL_ARB_occlusion_query2 1 +#endif /* GL_ARB_occlusion_query2 */ + +#ifndef GL_ARB_parallel_shader_compile +#define GL_ARB_parallel_shader_compile 1 +#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0 +#define GL_COMPLETION_STATUS_ARB 0x91B1 + typedef void(APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSARBPROC)(GLuint count); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMaxShaderCompilerThreadsARB(GLuint count); +#endif +#endif /* GL_ARB_parallel_shader_compile */ + +#ifndef GL_ARB_pipeline_statistics_query +#define GL_ARB_pipeline_statistics_query 1 +#define GL_VERTICES_SUBMITTED_ARB 0x82EE +#define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF +#define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0 +#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2 +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3 +#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4 +#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5 +#define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6 +#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7 +#endif /* GL_ARB_pipeline_statistics_query */ + +#ifndef GL_ARB_pixel_buffer_object +#define GL_ARB_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF +#endif /* GL_ARB_pixel_buffer_object */ + +#ifndef GL_ARB_point_parameters +#define GL_ARB_point_parameters 1 +#define GL_POINT_SIZE_MIN_ARB 0x8126 +#define GL_POINT_SIZE_MAX_ARB 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 +#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 + typedef void(APIENTRYP PFNGLPOINTPARAMETERFARBPROC)(GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLPOINTPARAMETERFVARBPROC)(GLenum pname, const GLfloat* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPointParameterfARB(GLenum pname, GLfloat param); + GLAPI void APIENTRY glPointParameterfvARB(GLenum pname, const GLfloat* params); +#endif +#endif /* GL_ARB_point_parameters */ + +#ifndef GL_ARB_point_sprite +#define GL_ARB_point_sprite 1 +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_COORD_REPLACE_ARB 0x8862 +#endif /* GL_ARB_point_sprite */ + +#ifndef GL_ARB_polygon_offset_clamp +#define GL_ARB_polygon_offset_clamp 1 +#endif /* GL_ARB_polygon_offset_clamp */ + +#ifndef GL_ARB_post_depth_coverage +#define GL_ARB_post_depth_coverage 1 +#endif /* GL_ARB_post_depth_coverage */ + +#ifndef GL_ARB_program_interface_query +#define GL_ARB_program_interface_query 1 +#endif /* GL_ARB_program_interface_query */ + +#ifndef GL_ARB_provoking_vertex +#define GL_ARB_provoking_vertex 1 +#endif /* GL_ARB_provoking_vertex */ + +#ifndef GL_ARB_query_buffer_object +#define GL_ARB_query_buffer_object 1 +#endif /* GL_ARB_query_buffer_object */ + +#ifndef GL_ARB_robust_buffer_access_behavior +#define GL_ARB_robust_buffer_access_behavior 1 +#endif /* GL_ARB_robust_buffer_access_behavior */ + +#ifndef GL_ARB_robustness +#define GL_ARB_robustness 1 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 + typedef GLenum(APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC)(void); + typedef void(APIENTRYP PFNGLGETNTEXIMAGEARBPROC)( + GLenum target, + GLint level, + GLenum format, + GLenum type, + GLsizei bufSize, + void* img + ); + typedef void(APIENTRYP PFNGLREADNPIXELSARBPROC)( + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + GLsizei bufSize, + void* data + ); + typedef void(APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint lod, GLsizei bufSize, void* img); + typedef void(APIENTRYP PFNGLGETNUNIFORMFVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLfloat* params); + typedef void(APIENTRYP PFNGLGETNUNIFORMIVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLint* params); + typedef void(APIENTRYP PFNGLGETNUNIFORMUIVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLuint* params); + typedef void(APIENTRYP + PFNGLGETNUNIFORMDVARBPROC)(GLuint program, GLint location, GLsizei bufSize, GLdouble* params); + typedef void(APIENTRYP PFNGLGETNMAPDVARBPROC)(GLenum target, GLenum query, GLsizei bufSize, GLdouble* v); + typedef void(APIENTRYP PFNGLGETNMAPFVARBPROC)(GLenum target, GLenum query, GLsizei bufSize, GLfloat* v); + typedef void(APIENTRYP PFNGLGETNMAPIVARBPROC)(GLenum target, GLenum query, GLsizei bufSize, GLint* v); + typedef void(APIENTRYP PFNGLGETNPIXELMAPFVARBPROC)(GLenum map, GLsizei bufSize, GLfloat* values); + typedef void(APIENTRYP PFNGLGETNPIXELMAPUIVARBPROC)(GLenum map, GLsizei bufSize, GLuint* values); + typedef void(APIENTRYP PFNGLGETNPIXELMAPUSVARBPROC)(GLenum map, GLsizei bufSize, GLushort* values); + typedef void(APIENTRYP PFNGLGETNPOLYGONSTIPPLEARBPROC)(GLsizei bufSize, GLubyte* pattern); + typedef void(APIENTRYP PFNGLGETNCOLORTABLEARBPROC)( + GLenum target, + GLenum format, + GLenum type, + GLsizei bufSize, + void* table + ); + typedef void(APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC)( + GLenum target, + GLenum format, + GLenum type, + GLsizei bufSize, + void* image + ); + typedef void(APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC)( + GLenum target, + GLenum format, + GLenum type, + GLsizei rowBufSize, + void* row, + GLsizei columnBufSize, + void* column, + void* span + ); + typedef void(APIENTRYP PFNGLGETNHISTOGRAMARBPROC)( + GLenum target, + GLboolean reset, + GLenum format, + GLenum type, + GLsizei bufSize, + void* values + ); + typedef void(APIENTRYP PFNGLGETNMINMAXARBPROC)( + GLenum target, + GLboolean reset, + GLenum format, + GLenum type, + GLsizei bufSize, + void* values + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLenum APIENTRY glGetGraphicsResetStatusARB(void); + GLAPI void APIENTRY + glGetnTexImageARB(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void* img); + GLAPI void APIENTRY glReadnPixelsARB( + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + GLsizei bufSize, + void* data + ); + GLAPI void APIENTRY glGetnCompressedTexImageARB(GLenum target, GLint lod, GLsizei bufSize, void* img); + GLAPI void APIENTRY glGetnUniformfvARB(GLuint program, GLint location, GLsizei bufSize, GLfloat* params); + GLAPI void APIENTRY glGetnUniformivARB(GLuint program, GLint location, GLsizei bufSize, GLint* params); + GLAPI void APIENTRY glGetnUniformuivARB(GLuint program, GLint location, GLsizei bufSize, GLuint* params); + GLAPI void APIENTRY glGetnUniformdvARB(GLuint program, GLint location, GLsizei bufSize, GLdouble* params); + GLAPI void APIENTRY glGetnMapdvARB(GLenum target, GLenum query, GLsizei bufSize, GLdouble* v); + GLAPI void APIENTRY glGetnMapfvARB(GLenum target, GLenum query, GLsizei bufSize, GLfloat* v); + GLAPI void APIENTRY glGetnMapivARB(GLenum target, GLenum query, GLsizei bufSize, GLint* v); + GLAPI void APIENTRY glGetnPixelMapfvARB(GLenum map, GLsizei bufSize, GLfloat* values); + GLAPI void APIENTRY glGetnPixelMapuivARB(GLenum map, GLsizei bufSize, GLuint* values); + GLAPI void APIENTRY glGetnPixelMapusvARB(GLenum map, GLsizei bufSize, GLushort* values); + GLAPI void APIENTRY glGetnPolygonStippleARB(GLsizei bufSize, GLubyte* pattern); + GLAPI void APIENTRY glGetnColorTableARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* table); + GLAPI void APIENTRY + glGetnConvolutionFilterARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, void* image); + GLAPI void APIENTRY glGetnSeparableFilterARB( + GLenum target, + GLenum format, + GLenum type, + GLsizei rowBufSize, + void* row, + GLsizei columnBufSize, + void* column, + void* span + ); + GLAPI void APIENTRY + glGetnHistogramARB(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); + GLAPI void APIENTRY + glGetnMinmaxARB(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void* values); +#endif +#endif /* GL_ARB_robustness */ + +#ifndef GL_ARB_robustness_isolation +#define GL_ARB_robustness_isolation 1 +#endif /* GL_ARB_robustness_isolation */ + +#ifndef GL_ARB_sample_locations +#define GL_ARB_sample_locations 1 +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340 +#define GL_SAMPLE_LOCATION_ARB 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343 + typedef void(APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)( + GLenum target, + GLuint start, + GLsizei count, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)( + GLuint framebuffer, + GLuint start, + GLsizei count, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLEVALUATEDEPTHVALUESARBPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFramebufferSampleLocationsfvARB(GLenum target, GLuint start, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY + glNamedFramebufferSampleLocationsfvARB(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY glEvaluateDepthValuesARB(void); +#endif +#endif /* GL_ARB_sample_locations */ + +#ifndef GL_ARB_sample_shading +#define GL_ARB_sample_shading 1 +#define GL_SAMPLE_SHADING_ARB 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 + typedef void(APIENTRYP PFNGLMINSAMPLESHADINGARBPROC)(GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMinSampleShadingARB(GLfloat value); +#endif +#endif /* GL_ARB_sample_shading */ + +#ifndef GL_ARB_sampler_objects +#define GL_ARB_sampler_objects 1 +#endif /* GL_ARB_sampler_objects */ + +#ifndef GL_ARB_seamless_cube_map +#define GL_ARB_seamless_cube_map 1 +#endif /* GL_ARB_seamless_cube_map */ + +#ifndef GL_ARB_seamless_cubemap_per_texture +#define GL_ARB_seamless_cubemap_per_texture 1 +#endif /* GL_ARB_seamless_cubemap_per_texture */ + +#ifndef GL_ARB_separate_shader_objects +#define GL_ARB_separate_shader_objects 1 +#endif /* GL_ARB_separate_shader_objects */ + +#ifndef GL_ARB_shader_atomic_counter_ops +#define GL_ARB_shader_atomic_counter_ops 1 +#endif /* GL_ARB_shader_atomic_counter_ops */ + +#ifndef GL_ARB_shader_atomic_counters +#define GL_ARB_shader_atomic_counters 1 +#endif /* GL_ARB_shader_atomic_counters */ + +#ifndef GL_ARB_shader_ballot +#define GL_ARB_shader_ballot 1 +#endif /* GL_ARB_shader_ballot */ + +#ifndef GL_ARB_shader_bit_encoding +#define GL_ARB_shader_bit_encoding 1 +#endif /* GL_ARB_shader_bit_encoding */ + +#ifndef GL_ARB_shader_clock +#define GL_ARB_shader_clock 1 +#endif /* GL_ARB_shader_clock */ + +#ifndef GL_ARB_shader_draw_parameters +#define GL_ARB_shader_draw_parameters 1 +#endif /* GL_ARB_shader_draw_parameters */ + +#ifndef GL_ARB_shader_group_vote +#define GL_ARB_shader_group_vote 1 +#endif /* GL_ARB_shader_group_vote */ + +#ifndef GL_ARB_shader_image_load_store +#define GL_ARB_shader_image_load_store 1 +#endif /* GL_ARB_shader_image_load_store */ + +#ifndef GL_ARB_shader_image_size +#define GL_ARB_shader_image_size 1 +#endif /* GL_ARB_shader_image_size */ + +#ifndef GL_ARB_shader_objects +#define GL_ARB_shader_objects 1 +#ifdef __APPLE__ + typedef void* GLhandleARB; +#else + typedef unsigned int GLhandleARB; +#endif + typedef char GLcharARB; +#define GL_PROGRAM_OBJECT_ARB 0x8B40 +#define GL_SHADER_OBJECT_ARB 0x8B48 +#define GL_OBJECT_TYPE_ARB 0x8B4E +#define GL_OBJECT_SUBTYPE_ARB 0x8B4F +#define GL_FLOAT_VEC2_ARB 0x8B50 +#define GL_FLOAT_VEC3_ARB 0x8B51 +#define GL_FLOAT_VEC4_ARB 0x8B52 +#define GL_INT_VEC2_ARB 0x8B53 +#define GL_INT_VEC3_ARB 0x8B54 +#define GL_INT_VEC4_ARB 0x8B55 +#define GL_BOOL_ARB 0x8B56 +#define GL_BOOL_VEC2_ARB 0x8B57 +#define GL_BOOL_VEC3_ARB 0x8B58 +#define GL_BOOL_VEC4_ARB 0x8B59 +#define GL_FLOAT_MAT2_ARB 0x8B5A +#define GL_FLOAT_MAT3_ARB 0x8B5B +#define GL_FLOAT_MAT4_ARB 0x8B5C +#define GL_SAMPLER_1D_ARB 0x8B5D +#define GL_SAMPLER_2D_ARB 0x8B5E +#define GL_SAMPLER_3D_ARB 0x8B5F +#define GL_SAMPLER_CUBE_ARB 0x8B60 +#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 +#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 +#define GL_SAMPLER_2D_RECT_ARB 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 +#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 +#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 +#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 +#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 +#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 +#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 +#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 +#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 +#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 + typedef void(APIENTRYP PFNGLDELETEOBJECTARBPROC)(GLhandleARB obj); + typedef GLhandleARB(APIENTRYP PFNGLGETHANDLEARBPROC)(GLenum pname); + typedef void(APIENTRYP PFNGLDETACHOBJECTARBPROC)(GLhandleARB containerObj, GLhandleARB attachedObj); + typedef GLhandleARB(APIENTRYP PFNGLCREATESHADEROBJECTARBPROC)(GLenum shaderType); + typedef void(APIENTRYP PFNGLSHADERSOURCEARBPROC)( + GLhandleARB shaderObj, + GLsizei count, + const GLcharARB** string, + const GLint* length + ); + typedef void(APIENTRYP PFNGLCOMPILESHADERARBPROC)(GLhandleARB shaderObj); + typedef GLhandleARB(APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC)(void); + typedef void(APIENTRYP PFNGLATTACHOBJECTARBPROC)(GLhandleARB containerObj, GLhandleARB obj); + typedef void(APIENTRYP PFNGLLINKPROGRAMARBPROC)(GLhandleARB programObj); + typedef void(APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC)(GLhandleARB programObj); + typedef void(APIENTRYP PFNGLVALIDATEPROGRAMARBPROC)(GLhandleARB programObj); + typedef void(APIENTRYP PFNGLUNIFORM1FARBPROC)(GLint location, GLfloat v0); + typedef void(APIENTRYP PFNGLUNIFORM2FARBPROC)(GLint location, GLfloat v0, GLfloat v1); + typedef void(APIENTRYP PFNGLUNIFORM3FARBPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + typedef void(APIENTRYP PFNGLUNIFORM4FARBPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + typedef void(APIENTRYP PFNGLUNIFORM1IARBPROC)(GLint location, GLint v0); + typedef void(APIENTRYP PFNGLUNIFORM2IARBPROC)(GLint location, GLint v0, GLint v1); + typedef void(APIENTRYP PFNGLUNIFORM3IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2); + typedef void(APIENTRYP PFNGLUNIFORM4IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + typedef void(APIENTRYP PFNGLUNIFORM1FVARBPROC)(GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLUNIFORM2FVARBPROC)(GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLUNIFORM3FVARBPROC)(GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLUNIFORM4FVARBPROC)(GLint location, GLsizei count, const GLfloat* value); + typedef void(APIENTRYP PFNGLUNIFORM1IVARBPROC)(GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLUNIFORM2IVARBPROC)(GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLUNIFORM3IVARBPROC)(GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLUNIFORM4IVARBPROC)(GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC)( + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC)(GLhandleARB obj, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC)(GLhandleARB obj, GLenum pname, GLint* params); + typedef void(APIENTRYP + PFNGLGETINFOLOGARBPROC)(GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB* infoLog); + typedef void(APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC)( + GLhandleARB containerObj, + GLsizei maxCount, + GLsizei* count, + GLhandleARB* obj + ); + typedef GLint(APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC)(GLhandleARB programObj, const GLcharARB* name); + typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC)( + GLhandleARB programObj, + GLuint index, + GLsizei maxLength, + GLsizei* length, + GLint* size, + GLenum* type, + GLcharARB* name + ); + typedef void(APIENTRYP PFNGLGETUNIFORMFVARBPROC)(GLhandleARB programObj, GLint location, GLfloat* params); + typedef void(APIENTRYP PFNGLGETUNIFORMIVARBPROC)(GLhandleARB programObj, GLint location, GLint* params); + typedef void(APIENTRYP PFNGLGETSHADERSOURCEARBPROC)( + GLhandleARB obj, + GLsizei maxLength, + GLsizei* length, + GLcharARB* source + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDeleteObjectARB(GLhandleARB obj); + GLAPI GLhandleARB APIENTRY glGetHandleARB(GLenum pname); + GLAPI void APIENTRY glDetachObjectARB(GLhandleARB containerObj, GLhandleARB attachedObj); + GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB(GLenum shaderType); + GLAPI void APIENTRY + glShaderSourceARB(GLhandleARB shaderObj, GLsizei count, const GLcharARB** string, const GLint* length); + GLAPI void APIENTRY glCompileShaderARB(GLhandleARB shaderObj); + GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB(void); + GLAPI void APIENTRY glAttachObjectARB(GLhandleARB containerObj, GLhandleARB obj); + GLAPI void APIENTRY glLinkProgramARB(GLhandleARB programObj); + GLAPI void APIENTRY glUseProgramObjectARB(GLhandleARB programObj); + GLAPI void APIENTRY glValidateProgramARB(GLhandleARB programObj); + GLAPI void APIENTRY glUniform1fARB(GLint location, GLfloat v0); + GLAPI void APIENTRY glUniform2fARB(GLint location, GLfloat v0, GLfloat v1); + GLAPI void APIENTRY glUniform3fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + GLAPI void APIENTRY glUniform4fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + GLAPI void APIENTRY glUniform1iARB(GLint location, GLint v0); + GLAPI void APIENTRY glUniform2iARB(GLint location, GLint v0, GLint v1); + GLAPI void APIENTRY glUniform3iARB(GLint location, GLint v0, GLint v1, GLint v2); + GLAPI void APIENTRY glUniform4iARB(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + GLAPI void APIENTRY glUniform1fvARB(GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glUniform2fvARB(GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glUniform3fvARB(GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glUniform4fvARB(GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glUniform1ivARB(GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glUniform2ivARB(GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glUniform3ivARB(GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glUniform4ivARB(GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glUniformMatrix2fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix3fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glUniformMatrix4fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); + GLAPI void APIENTRY glGetObjectParameterfvARB(GLhandleARB obj, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetObjectParameterivARB(GLhandleARB obj, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetInfoLogARB(GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB* infoLog); + GLAPI void APIENTRY + glGetAttachedObjectsARB(GLhandleARB containerObj, GLsizei maxCount, GLsizei* count, GLhandleARB* obj); + GLAPI GLint APIENTRY glGetUniformLocationARB(GLhandleARB programObj, const GLcharARB* name); + GLAPI void APIENTRY glGetActiveUniformARB( + GLhandleARB programObj, + GLuint index, + GLsizei maxLength, + GLsizei* length, + GLint* size, + GLenum* type, + GLcharARB* name + ); + GLAPI void APIENTRY glGetUniformfvARB(GLhandleARB programObj, GLint location, GLfloat* params); + GLAPI void APIENTRY glGetUniformivARB(GLhandleARB programObj, GLint location, GLint* params); + GLAPI void APIENTRY glGetShaderSourceARB(GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB* source); +#endif +#endif /* GL_ARB_shader_objects */ + +#ifndef GL_ARB_shader_precision +#define GL_ARB_shader_precision 1 +#endif /* GL_ARB_shader_precision */ + +#ifndef GL_ARB_shader_stencil_export +#define GL_ARB_shader_stencil_export 1 +#endif /* GL_ARB_shader_stencil_export */ + +#ifndef GL_ARB_shader_storage_buffer_object +#define GL_ARB_shader_storage_buffer_object 1 +#endif /* GL_ARB_shader_storage_buffer_object */ + +#ifndef GL_ARB_shader_subroutine +#define GL_ARB_shader_subroutine 1 +#endif /* GL_ARB_shader_subroutine */ + +#ifndef GL_ARB_shader_texture_image_samples +#define GL_ARB_shader_texture_image_samples 1 +#endif /* GL_ARB_shader_texture_image_samples */ + +#ifndef GL_ARB_shader_texture_lod +#define GL_ARB_shader_texture_lod 1 +#endif /* GL_ARB_shader_texture_lod */ + +#ifndef GL_ARB_shader_viewport_layer_array +#define GL_ARB_shader_viewport_layer_array 1 +#endif /* GL_ARB_shader_viewport_layer_array */ + +#ifndef GL_ARB_shading_language_100 +#define GL_ARB_shading_language_100 1 +#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C +#endif /* GL_ARB_shading_language_100 */ + +#ifndef GL_ARB_shading_language_420pack +#define GL_ARB_shading_language_420pack 1 +#endif /* GL_ARB_shading_language_420pack */ + +#ifndef GL_ARB_shading_language_include +#define GL_ARB_shading_language_include 1 +#define GL_SHADER_INCLUDE_ARB 0x8DAE +#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 +#define GL_NAMED_STRING_TYPE_ARB 0x8DEA + typedef void(APIENTRYP PFNGLNAMEDSTRINGARBPROC)( + GLenum type, + GLint namelen, + const GLchar* name, + GLint stringlen, + const GLchar* string + ); + typedef void(APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC)(GLint namelen, const GLchar* name); + typedef void(APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC)( + GLuint shader, + GLsizei count, + const GLchar* const* path, + const GLint* length + ); + typedef GLboolean(APIENTRYP PFNGLISNAMEDSTRINGARBPROC)(GLint namelen, const GLchar* name); + typedef void(APIENTRYP PFNGLGETNAMEDSTRINGARBPROC)( + GLint namelen, + const GLchar* name, + GLsizei bufSize, + GLint* stringlen, + GLchar* string + ); + typedef void(APIENTRYP + PFNGLGETNAMEDSTRINGIVARBPROC)(GLint namelen, const GLchar* name, GLenum pname, GLint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glNamedStringARB(GLenum type, GLint namelen, const GLchar* name, GLint stringlen, const GLchar* string); + GLAPI void APIENTRY glDeleteNamedStringARB(GLint namelen, const GLchar* name); + GLAPI void APIENTRY + glCompileShaderIncludeARB(GLuint shader, GLsizei count, const GLchar* const* path, const GLint* length); + GLAPI GLboolean APIENTRY glIsNamedStringARB(GLint namelen, const GLchar* name); + GLAPI void APIENTRY + glGetNamedStringARB(GLint namelen, const GLchar* name, GLsizei bufSize, GLint* stringlen, GLchar* string); + GLAPI void APIENTRY glGetNamedStringivARB(GLint namelen, const GLchar* name, GLenum pname, GLint* params); +#endif +#endif /* GL_ARB_shading_language_include */ + +#ifndef GL_ARB_shading_language_packing +#define GL_ARB_shading_language_packing 1 +#endif /* GL_ARB_shading_language_packing */ + +#ifndef GL_ARB_shadow +#define GL_ARB_shadow 1 +#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C +#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D +#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E +#endif /* GL_ARB_shadow */ + +#ifndef GL_ARB_shadow_ambient +#define GL_ARB_shadow_ambient 1 +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF +#endif /* GL_ARB_shadow_ambient */ + +#ifndef GL_ARB_sparse_buffer +#define GL_ARB_sparse_buffer 1 +#define GL_SPARSE_STORAGE_BIT_ARB 0x0400 +#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8 + typedef void(APIENTRYP PFNGLBUFFERPAGECOMMITMENTARBPROC)( + GLenum target, + GLintptr offset, + GLsizeiptr size, + GLboolean commit + ); + typedef void(APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC)( + GLuint buffer, + GLintptr offset, + GLsizeiptr size, + GLboolean commit + ); + typedef void(APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC)( + GLuint buffer, + GLintptr offset, + GLsizeiptr size, + GLboolean commit + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBufferPageCommitmentARB(GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit); + GLAPI void APIENTRY + glNamedBufferPageCommitmentEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); + GLAPI void APIENTRY + glNamedBufferPageCommitmentARB(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit); +#endif +#endif /* GL_ARB_sparse_buffer */ + +#ifndef GL_ARB_sparse_texture +#define GL_ARB_sparse_texture 1 +#define GL_TEXTURE_SPARSE_ARB 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7 +#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA +#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197 +#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9 + typedef void(APIENTRYP PFNGLTEXPAGECOMMITMENTARBPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean commit + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTexPageCommitmentARB( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean commit + ); +#endif +#endif /* GL_ARB_sparse_texture */ + +#ifndef GL_ARB_sparse_texture2 +#define GL_ARB_sparse_texture2 1 +#endif /* GL_ARB_sparse_texture2 */ + +#ifndef GL_ARB_sparse_texture_clamp +#define GL_ARB_sparse_texture_clamp 1 +#endif /* GL_ARB_sparse_texture_clamp */ + +#ifndef GL_ARB_spirv_extensions +#define GL_ARB_spirv_extensions 1 +#endif /* GL_ARB_spirv_extensions */ + +#ifndef GL_ARB_stencil_texturing +#define GL_ARB_stencil_texturing 1 +#endif /* GL_ARB_stencil_texturing */ + +#ifndef GL_ARB_sync +#define GL_ARB_sync 1 +#endif /* GL_ARB_sync */ + +#ifndef GL_ARB_tessellation_shader +#define GL_ARB_tessellation_shader 1 +#endif /* GL_ARB_tessellation_shader */ + +#ifndef GL_ARB_texture_barrier +#define GL_ARB_texture_barrier 1 +#endif /* GL_ARB_texture_barrier */ + +#ifndef GL_ARB_texture_border_clamp +#define GL_ARB_texture_border_clamp 1 +#define GL_CLAMP_TO_BORDER_ARB 0x812D +#endif /* GL_ARB_texture_border_clamp */ + +#ifndef GL_ARB_texture_buffer_object +#define GL_ARB_texture_buffer_object 1 +#define GL_TEXTURE_BUFFER_ARB 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E + typedef void(APIENTRYP PFNGLTEXBUFFERARBPROC)(GLenum target, GLenum internalformat, GLuint buffer); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTexBufferARB(GLenum target, GLenum internalformat, GLuint buffer); +#endif +#endif /* GL_ARB_texture_buffer_object */ + +#ifndef GL_ARB_texture_buffer_object_rgb32 +#define GL_ARB_texture_buffer_object_rgb32 1 +#endif /* GL_ARB_texture_buffer_object_rgb32 */ + +#ifndef GL_ARB_texture_buffer_range +#define GL_ARB_texture_buffer_range 1 +#endif /* GL_ARB_texture_buffer_range */ + +#ifndef GL_ARB_texture_compression +#define GL_ARB_texture_compression 1 +#define GL_COMPRESSED_ALPHA_ARB 0x84E9 +#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB +#define GL_COMPRESSED_INTENSITY_ARB 0x84EC +#define GL_COMPRESSED_RGB_ARB 0x84ED +#define GL_COMPRESSED_RGBA_ARB 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 +#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* data + ); + typedef void(APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint level, void* img); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glCompressedTexImage3DARB( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTexImage2DARB( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTexImage1DARB( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTexSubImage3DARB( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTexSubImage2DARB( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glCompressedTexSubImage1DARB( + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* data + ); + GLAPI void APIENTRY glGetCompressedTexImageARB(GLenum target, GLint level, void* img); +#endif +#endif /* GL_ARB_texture_compression */ + +#ifndef GL_ARB_texture_compression_bptc +#define GL_ARB_texture_compression_bptc 1 +#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F +#endif /* GL_ARB_texture_compression_bptc */ + +#ifndef GL_ARB_texture_compression_rgtc +#define GL_ARB_texture_compression_rgtc 1 +#endif /* GL_ARB_texture_compression_rgtc */ + +#ifndef GL_ARB_texture_cube_map +#define GL_ARB_texture_cube_map 1 +#define GL_NORMAL_MAP_ARB 0x8511 +#define GL_REFLECTION_MAP_ARB 0x8512 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C +#endif /* GL_ARB_texture_cube_map */ + +#ifndef GL_ARB_texture_cube_map_array +#define GL_ARB_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F +#endif /* GL_ARB_texture_cube_map_array */ + +#ifndef GL_ARB_texture_env_add +#define GL_ARB_texture_env_add 1 +#endif /* GL_ARB_texture_env_add */ + +#ifndef GL_ARB_texture_env_combine +#define GL_ARB_texture_env_combine 1 +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_SOURCE0_RGB_ARB 0x8580 +#define GL_SOURCE1_RGB_ARB 0x8581 +#define GL_SOURCE2_RGB_ARB 0x8582 +#define GL_SOURCE0_ALPHA_ARB 0x8588 +#define GL_SOURCE1_ALPHA_ARB 0x8589 +#define GL_SOURCE2_ALPHA_ARB 0x858A +#define GL_OPERAND0_RGB_ARB 0x8590 +#define GL_OPERAND1_RGB_ARB 0x8591 +#define GL_OPERAND2_RGB_ARB 0x8592 +#define GL_OPERAND0_ALPHA_ARB 0x8598 +#define GL_OPERAND1_ALPHA_ARB 0x8599 +#define GL_OPERAND2_ALPHA_ARB 0x859A +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_CONSTANT_ARB 0x8576 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PREVIOUS_ARB 0x8578 +#endif /* GL_ARB_texture_env_combine */ + +#ifndef GL_ARB_texture_env_crossbar +#define GL_ARB_texture_env_crossbar 1 +#endif /* GL_ARB_texture_env_crossbar */ + +#ifndef GL_ARB_texture_env_dot3 +#define GL_ARB_texture_env_dot3 1 +#define GL_DOT3_RGB_ARB 0x86AE +#define GL_DOT3_RGBA_ARB 0x86AF +#endif /* GL_ARB_texture_env_dot3 */ + +#ifndef GL_ARB_texture_filter_anisotropic +#define GL_ARB_texture_filter_anisotropic 1 +#endif /* GL_ARB_texture_filter_anisotropic */ + +#ifndef GL_ARB_texture_filter_minmax +#define GL_ARB_texture_filter_minmax 1 +#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366 +#define GL_WEIGHTED_AVERAGE_ARB 0x9367 +#endif /* GL_ARB_texture_filter_minmax */ + +#ifndef GL_ARB_texture_float +#define GL_ARB_texture_float 1 +#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 +#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 +#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 +#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 +#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 +#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 +#define GL_RGBA32F_ARB 0x8814 +#define GL_RGB32F_ARB 0x8815 +#define GL_ALPHA32F_ARB 0x8816 +#define GL_INTENSITY32F_ARB 0x8817 +#define GL_LUMINANCE32F_ARB 0x8818 +#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 +#define GL_RGBA16F_ARB 0x881A +#define GL_RGB16F_ARB 0x881B +#define GL_ALPHA16F_ARB 0x881C +#define GL_INTENSITY16F_ARB 0x881D +#define GL_LUMINANCE16F_ARB 0x881E +#define GL_LUMINANCE_ALPHA16F_ARB 0x881F +#endif /* GL_ARB_texture_float */ + +#ifndef GL_ARB_texture_gather +#define GL_ARB_texture_gather 1 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F +#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F +#endif /* GL_ARB_texture_gather */ + +#ifndef GL_ARB_texture_mirror_clamp_to_edge +#define GL_ARB_texture_mirror_clamp_to_edge 1 +#endif /* GL_ARB_texture_mirror_clamp_to_edge */ + +#ifndef GL_ARB_texture_mirrored_repeat +#define GL_ARB_texture_mirrored_repeat 1 +#define GL_MIRRORED_REPEAT_ARB 0x8370 +#endif /* GL_ARB_texture_mirrored_repeat */ + +#ifndef GL_ARB_texture_multisample +#define GL_ARB_texture_multisample 1 +#endif /* GL_ARB_texture_multisample */ + +#ifndef GL_ARB_texture_non_power_of_two +#define GL_ARB_texture_non_power_of_two 1 +#endif /* GL_ARB_texture_non_power_of_two */ + +#ifndef GL_ARB_texture_query_levels +#define GL_ARB_texture_query_levels 1 +#endif /* GL_ARB_texture_query_levels */ + +#ifndef GL_ARB_texture_query_lod +#define GL_ARB_texture_query_lod 1 +#endif /* GL_ARB_texture_query_lod */ + +#ifndef GL_ARB_texture_rectangle +#define GL_ARB_texture_rectangle 1 +#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 +#endif /* GL_ARB_texture_rectangle */ + +#ifndef GL_ARB_texture_rg +#define GL_ARB_texture_rg 1 +#endif /* GL_ARB_texture_rg */ + +#ifndef GL_ARB_texture_rgb10_a2ui +#define GL_ARB_texture_rgb10_a2ui 1 +#endif /* GL_ARB_texture_rgb10_a2ui */ + +#ifndef GL_ARB_texture_stencil8 +#define GL_ARB_texture_stencil8 1 +#endif /* GL_ARB_texture_stencil8 */ + +#ifndef GL_ARB_texture_storage +#define GL_ARB_texture_storage 1 +#endif /* GL_ARB_texture_storage */ + +#ifndef GL_ARB_texture_storage_multisample +#define GL_ARB_texture_storage_multisample 1 +#endif /* GL_ARB_texture_storage_multisample */ + +#ifndef GL_ARB_texture_swizzle +#define GL_ARB_texture_swizzle 1 +#endif /* GL_ARB_texture_swizzle */ + +#ifndef GL_ARB_texture_view +#define GL_ARB_texture_view 1 +#endif /* GL_ARB_texture_view */ + +#ifndef GL_ARB_timer_query +#define GL_ARB_timer_query 1 +#endif /* GL_ARB_timer_query */ + +#ifndef GL_ARB_transform_feedback2 +#define GL_ARB_transform_feedback2 1 +#endif /* GL_ARB_transform_feedback2 */ + +#ifndef GL_ARB_transform_feedback3 +#define GL_ARB_transform_feedback3 1 +#endif /* GL_ARB_transform_feedback3 */ + +#ifndef GL_ARB_transform_feedback_instanced +#define GL_ARB_transform_feedback_instanced 1 +#endif /* GL_ARB_transform_feedback_instanced */ + +#ifndef GL_ARB_transform_feedback_overflow_query +#define GL_ARB_transform_feedback_overflow_query 1 +#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED +#endif /* GL_ARB_transform_feedback_overflow_query */ + +#ifndef GL_ARB_transpose_matrix +#define GL_ARB_transpose_matrix 1 +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 + typedef void(APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC)(const GLfloat* m); + typedef void(APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC)(const GLdouble* m); + typedef void(APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC)(const GLfloat* m); + typedef void(APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC)(const GLdouble* m); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glLoadTransposeMatrixfARB(const GLfloat* m); + GLAPI void APIENTRY glLoadTransposeMatrixdARB(const GLdouble* m); + GLAPI void APIENTRY glMultTransposeMatrixfARB(const GLfloat* m); + GLAPI void APIENTRY glMultTransposeMatrixdARB(const GLdouble* m); +#endif +#endif /* GL_ARB_transpose_matrix */ + +#ifndef GL_ARB_uniform_buffer_object +#define GL_ARB_uniform_buffer_object 1 +#endif /* GL_ARB_uniform_buffer_object */ + +#ifndef GL_ARB_vertex_array_bgra +#define GL_ARB_vertex_array_bgra 1 +#endif /* GL_ARB_vertex_array_bgra */ + +#ifndef GL_ARB_vertex_array_object +#define GL_ARB_vertex_array_object 1 +#endif /* GL_ARB_vertex_array_object */ + +#ifndef GL_ARB_vertex_attrib_64bit +#define GL_ARB_vertex_attrib_64bit 1 +#endif /* GL_ARB_vertex_attrib_64bit */ + +#ifndef GL_ARB_vertex_attrib_binding +#define GL_ARB_vertex_attrib_binding 1 +#endif /* GL_ARB_vertex_attrib_binding */ + +#ifndef GL_ARB_vertex_blend +#define GL_ARB_vertex_blend 1 +#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 +#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 +#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 +#define GL_VERTEX_BLEND_ARB 0x86A7 +#define GL_CURRENT_WEIGHT_ARB 0x86A8 +#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 +#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA +#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB +#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC +#define GL_WEIGHT_ARRAY_ARB 0x86AD +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW1_ARB 0x850A +#define GL_MODELVIEW2_ARB 0x8722 +#define GL_MODELVIEW3_ARB 0x8723 +#define GL_MODELVIEW4_ARB 0x8724 +#define GL_MODELVIEW5_ARB 0x8725 +#define GL_MODELVIEW6_ARB 0x8726 +#define GL_MODELVIEW7_ARB 0x8727 +#define GL_MODELVIEW8_ARB 0x8728 +#define GL_MODELVIEW9_ARB 0x8729 +#define GL_MODELVIEW10_ARB 0x872A +#define GL_MODELVIEW11_ARB 0x872B +#define GL_MODELVIEW12_ARB 0x872C +#define GL_MODELVIEW13_ARB 0x872D +#define GL_MODELVIEW14_ARB 0x872E +#define GL_MODELVIEW15_ARB 0x872F +#define GL_MODELVIEW16_ARB 0x8730 +#define GL_MODELVIEW17_ARB 0x8731 +#define GL_MODELVIEW18_ARB 0x8732 +#define GL_MODELVIEW19_ARB 0x8733 +#define GL_MODELVIEW20_ARB 0x8734 +#define GL_MODELVIEW21_ARB 0x8735 +#define GL_MODELVIEW22_ARB 0x8736 +#define GL_MODELVIEW23_ARB 0x8737 +#define GL_MODELVIEW24_ARB 0x8738 +#define GL_MODELVIEW25_ARB 0x8739 +#define GL_MODELVIEW26_ARB 0x873A +#define GL_MODELVIEW27_ARB 0x873B +#define GL_MODELVIEW28_ARB 0x873C +#define GL_MODELVIEW29_ARB 0x873D +#define GL_MODELVIEW30_ARB 0x873E +#define GL_MODELVIEW31_ARB 0x873F + typedef void(APIENTRYP PFNGLWEIGHTBVARBPROC)(GLint size, const GLbyte* weights); + typedef void(APIENTRYP PFNGLWEIGHTSVARBPROC)(GLint size, const GLshort* weights); + typedef void(APIENTRYP PFNGLWEIGHTIVARBPROC)(GLint size, const GLint* weights); + typedef void(APIENTRYP PFNGLWEIGHTFVARBPROC)(GLint size, const GLfloat* weights); + typedef void(APIENTRYP PFNGLWEIGHTDVARBPROC)(GLint size, const GLdouble* weights); + typedef void(APIENTRYP PFNGLWEIGHTUBVARBPROC)(GLint size, const GLubyte* weights); + typedef void(APIENTRYP PFNGLWEIGHTUSVARBPROC)(GLint size, const GLushort* weights); + typedef void(APIENTRYP PFNGLWEIGHTUIVARBPROC)(GLint size, const GLuint* weights); + typedef void(APIENTRYP PFNGLWEIGHTPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, const void* pointer); + typedef void(APIENTRYP PFNGLVERTEXBLENDARBPROC)(GLint count); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glWeightbvARB(GLint size, const GLbyte* weights); + GLAPI void APIENTRY glWeightsvARB(GLint size, const GLshort* weights); + GLAPI void APIENTRY glWeightivARB(GLint size, const GLint* weights); + GLAPI void APIENTRY glWeightfvARB(GLint size, const GLfloat* weights); + GLAPI void APIENTRY glWeightdvARB(GLint size, const GLdouble* weights); + GLAPI void APIENTRY glWeightubvARB(GLint size, const GLubyte* weights); + GLAPI void APIENTRY glWeightusvARB(GLint size, const GLushort* weights); + GLAPI void APIENTRY glWeightuivARB(GLint size, const GLuint* weights); + GLAPI void APIENTRY glWeightPointerARB(GLint size, GLenum type, GLsizei stride, const void* pointer); + GLAPI void APIENTRY glVertexBlendARB(GLint count); +#endif +#endif /* GL_ARB_vertex_blend */ + +#ifndef GL_ARB_vertex_buffer_object +#define GL_ARB_vertex_buffer_object 1 + typedef khronos_ssize_t GLsizeiptrARB; + typedef khronos_intptr_t GLintptrARB; +#define GL_BUFFER_SIZE_ARB 0x8764 +#define GL_BUFFER_USAGE_ARB 0x8765 +#define GL_ARRAY_BUFFER_ARB 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 +#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 +#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F +#define GL_READ_ONLY_ARB 0x88B8 +#define GL_WRITE_ONLY_ARB 0x88B9 +#define GL_READ_WRITE_ARB 0x88BA +#define GL_BUFFER_ACCESS_ARB 0x88BB +#define GL_BUFFER_MAPPED_ARB 0x88BC +#define GL_BUFFER_MAP_POINTER_ARB 0x88BD +#define GL_STREAM_DRAW_ARB 0x88E0 +#define GL_STREAM_READ_ARB 0x88E1 +#define GL_STREAM_COPY_ARB 0x88E2 +#define GL_STATIC_DRAW_ARB 0x88E4 +#define GL_STATIC_READ_ARB 0x88E5 +#define GL_STATIC_COPY_ARB 0x88E6 +#define GL_DYNAMIC_DRAW_ARB 0x88E8 +#define GL_DYNAMIC_READ_ARB 0x88E9 +#define GL_DYNAMIC_COPY_ARB 0x88EA + typedef void(APIENTRYP PFNGLBINDBUFFERARBPROC)(GLenum target, GLuint buffer); + typedef void(APIENTRYP PFNGLDELETEBUFFERSARBPROC)(GLsizei n, const GLuint* buffers); + typedef void(APIENTRYP PFNGLGENBUFFERSARBPROC)(GLsizei n, GLuint* buffers); + typedef GLboolean(APIENTRYP PFNGLISBUFFERARBPROC)(GLuint buffer); + typedef void(APIENTRYP PFNGLBUFFERDATAARBPROC)(GLenum target, GLsizeiptrARB size, const void* data, GLenum usage); + typedef void(APIENTRYP PFNGLBUFFERSUBDATAARBPROC)( + GLenum target, + GLintptrARB offset, + GLsizeiptrARB size, + const void* data + ); + typedef void(APIENTRYP + PFNGLGETBUFFERSUBDATAARBPROC)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void* data); + typedef void*(APIENTRYP PFNGLMAPBUFFERARBPROC)(GLenum target, GLenum access); + typedef GLboolean(APIENTRYP PFNGLUNMAPBUFFERARBPROC)(GLenum target); + typedef void(APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC)(GLenum target, GLenum pname, void** params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBindBufferARB(GLenum target, GLuint buffer); + GLAPI void APIENTRY glDeleteBuffersARB(GLsizei n, const GLuint* buffers); + GLAPI void APIENTRY glGenBuffersARB(GLsizei n, GLuint* buffers); + GLAPI GLboolean APIENTRY glIsBufferARB(GLuint buffer); + GLAPI void APIENTRY glBufferDataARB(GLenum target, GLsizeiptrARB size, const void* data, GLenum usage); + GLAPI void APIENTRY glBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void* data); + GLAPI void APIENTRY glGetBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, void* data); + GLAPI void* APIENTRY glMapBufferARB(GLenum target, GLenum access); + GLAPI GLboolean APIENTRY glUnmapBufferARB(GLenum target); + GLAPI void APIENTRY glGetBufferParameterivARB(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetBufferPointervARB(GLenum target, GLenum pname, void** params); +#endif +#endif /* GL_ARB_vertex_buffer_object */ + +#ifndef GL_ARB_vertex_program +#define GL_ARB_vertex_program 1 +#define GL_COLOR_SUM_ARB 0x8458 +#define GL_VERTEX_PROGRAM_ARB 0x8620 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 +#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A +#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 +#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 +#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 +#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 + typedef void(APIENTRYP PFNGLVERTEXATTRIB1DARBPROC)(GLuint index, GLdouble x); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1FARBPROC)(GLuint index, GLfloat x); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1SARBPROC)(GLuint index, GLshort x); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2DARBPROC)(GLuint index, GLdouble x, GLdouble y); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2FARBPROC)(GLuint index, GLfloat x, GLfloat y); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2SARBPROC)(GLuint index, GLshort x, GLshort y); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3DARBPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3FARBPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3SARBPROC)(GLuint index, GLshort x, GLshort y, GLshort z); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC)(GLuint index, const GLbyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC)(GLuint index, const GLubyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC)(GLuint index, const GLushort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC)(GLuint index, const GLbyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4DARBPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4FARBPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4SARBPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC)(GLuint index, const GLubyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC)(GLuint index, const GLushort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC)( + GLuint index, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + const void* pointer + ); + typedef void(APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC)(GLuint index); + typedef void(APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)(GLuint index); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC)(GLuint index, GLenum pname, GLdouble* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC)(GLuint index, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC)(GLuint index, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC)(GLuint index, GLenum pname, void** pointer); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glVertexAttrib1dARB(GLuint index, GLdouble x); + GLAPI void APIENTRY glVertexAttrib1dvARB(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib1fARB(GLuint index, GLfloat x); + GLAPI void APIENTRY glVertexAttrib1fvARB(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib1sARB(GLuint index, GLshort x); + GLAPI void APIENTRY glVertexAttrib1svARB(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y); + GLAPI void APIENTRY glVertexAttrib2dvARB(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y); + GLAPI void APIENTRY glVertexAttrib2fvARB(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib2sARB(GLuint index, GLshort x, GLshort y); + GLAPI void APIENTRY glVertexAttrib2svARB(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glVertexAttrib3dvARB(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glVertexAttrib3fvARB(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib3sARB(GLuint index, GLshort x, GLshort y, GLshort z); + GLAPI void APIENTRY glVertexAttrib3svARB(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib4NbvARB(GLuint index, const GLbyte* v); + GLAPI void APIENTRY glVertexAttrib4NivARB(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttrib4NsvARB(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib4NubARB(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + GLAPI void APIENTRY glVertexAttrib4NubvARB(GLuint index, const GLubyte* v); + GLAPI void APIENTRY glVertexAttrib4NuivARB(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttrib4NusvARB(GLuint index, const GLushort* v); + GLAPI void APIENTRY glVertexAttrib4bvARB(GLuint index, const GLbyte* v); + GLAPI void APIENTRY glVertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glVertexAttrib4dvARB(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib4fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + GLAPI void APIENTRY glVertexAttrib4fvARB(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib4ivARB(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttrib4sARB(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + GLAPI void APIENTRY glVertexAttrib4svARB(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib4ubvARB(GLuint index, const GLubyte* v); + GLAPI void APIENTRY glVertexAttrib4uivARB(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttrib4usvARB(GLuint index, const GLushort* v); + GLAPI void APIENTRY glVertexAttribPointerARB( + GLuint index, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + const void* pointer + ); + GLAPI void APIENTRY glEnableVertexAttribArrayARB(GLuint index); + GLAPI void APIENTRY glDisableVertexAttribArrayARB(GLuint index); + GLAPI void APIENTRY glGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble* params); + GLAPI void APIENTRY glGetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetVertexAttribivARB(GLuint index, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetVertexAttribPointervARB(GLuint index, GLenum pname, void** pointer); +#endif +#endif /* GL_ARB_vertex_program */ + +#ifndef GL_ARB_vertex_shader +#define GL_ARB_vertex_shader 1 +#define GL_VERTEX_SHADER_ARB 0x8B31 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A +#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D +#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 +#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A + typedef void(APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC)(GLhandleARB programObj, GLuint index, const GLcharARB* name); + typedef void(APIENTRYP PFNGLGETACTIVEATTRIBARBPROC)( + GLhandleARB programObj, + GLuint index, + GLsizei maxLength, + GLsizei* length, + GLint* size, + GLenum* type, + GLcharARB* name + ); + typedef GLint(APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC)(GLhandleARB programObj, const GLcharARB* name); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBindAttribLocationARB(GLhandleARB programObj, GLuint index, const GLcharARB* name); + GLAPI void APIENTRY glGetActiveAttribARB( + GLhandleARB programObj, + GLuint index, + GLsizei maxLength, + GLsizei* length, + GLint* size, + GLenum* type, + GLcharARB* name + ); + GLAPI GLint APIENTRY glGetAttribLocationARB(GLhandleARB programObj, const GLcharARB* name); +#endif +#endif /* GL_ARB_vertex_shader */ + +#ifndef GL_ARB_vertex_type_10f_11f_11f_rev +#define GL_ARB_vertex_type_10f_11f_11f_rev 1 +#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */ + +#ifndef GL_ARB_vertex_type_2_10_10_10_rev +#define GL_ARB_vertex_type_2_10_10_10_rev 1 +#endif /* GL_ARB_vertex_type_2_10_10_10_rev */ + +#ifndef GL_ARB_viewport_array +#define GL_ARB_viewport_array 1 + typedef void(APIENTRYP PFNGLDEPTHRANGEARRAYDVNVPROC)(GLuint first, GLsizei count, const GLdouble* v); + typedef void(APIENTRYP PFNGLDEPTHRANGEINDEXEDDNVPROC)(GLuint index, GLdouble n, GLdouble f); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDepthRangeArraydvNV(GLuint first, GLsizei count, const GLdouble* v); + GLAPI void APIENTRY glDepthRangeIndexeddNV(GLuint index, GLdouble n, GLdouble f); +#endif +#endif /* GL_ARB_viewport_array */ + +#ifndef GL_ARB_window_pos +#define GL_ARB_window_pos 1 + typedef void(APIENTRYP PFNGLWINDOWPOS2DARBPROC)(GLdouble x, GLdouble y); + typedef void(APIENTRYP PFNGLWINDOWPOS2DVARBPROC)(const GLdouble* v); + typedef void(APIENTRYP PFNGLWINDOWPOS2FARBPROC)(GLfloat x, GLfloat y); + typedef void(APIENTRYP PFNGLWINDOWPOS2FVARBPROC)(const GLfloat* v); + typedef void(APIENTRYP PFNGLWINDOWPOS2IARBPROC)(GLint x, GLint y); + typedef void(APIENTRYP PFNGLWINDOWPOS2IVARBPROC)(const GLint* v); + typedef void(APIENTRYP PFNGLWINDOWPOS2SARBPROC)(GLshort x, GLshort y); + typedef void(APIENTRYP PFNGLWINDOWPOS2SVARBPROC)(const GLshort* v); + typedef void(APIENTRYP PFNGLWINDOWPOS3DARBPROC)(GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLWINDOWPOS3DVARBPROC)(const GLdouble* v); + typedef void(APIENTRYP PFNGLWINDOWPOS3FARBPROC)(GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLWINDOWPOS3FVARBPROC)(const GLfloat* v); + typedef void(APIENTRYP PFNGLWINDOWPOS3IARBPROC)(GLint x, GLint y, GLint z); + typedef void(APIENTRYP PFNGLWINDOWPOS3IVARBPROC)(const GLint* v); + typedef void(APIENTRYP PFNGLWINDOWPOS3SARBPROC)(GLshort x, GLshort y, GLshort z); + typedef void(APIENTRYP PFNGLWINDOWPOS3SVARBPROC)(const GLshort* v); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glWindowPos2dARB(GLdouble x, GLdouble y); + GLAPI void APIENTRY glWindowPos2dvARB(const GLdouble* v); + GLAPI void APIENTRY glWindowPos2fARB(GLfloat x, GLfloat y); + GLAPI void APIENTRY glWindowPos2fvARB(const GLfloat* v); + GLAPI void APIENTRY glWindowPos2iARB(GLint x, GLint y); + GLAPI void APIENTRY glWindowPos2ivARB(const GLint* v); + GLAPI void APIENTRY glWindowPos2sARB(GLshort x, GLshort y); + GLAPI void APIENTRY glWindowPos2svARB(const GLshort* v); + GLAPI void APIENTRY glWindowPos3dARB(GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glWindowPos3dvARB(const GLdouble* v); + GLAPI void APIENTRY glWindowPos3fARB(GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glWindowPos3fvARB(const GLfloat* v); + GLAPI void APIENTRY glWindowPos3iARB(GLint x, GLint y, GLint z); + GLAPI void APIENTRY glWindowPos3ivARB(const GLint* v); + GLAPI void APIENTRY glWindowPos3sARB(GLshort x, GLshort y, GLshort z); + GLAPI void APIENTRY glWindowPos3svARB(const GLshort* v); +#endif +#endif /* GL_ARB_window_pos */ + +#ifndef GL_KHR_blend_equation_advanced +#define GL_KHR_blend_equation_advanced 1 +#define GL_MULTIPLY_KHR 0x9294 +#define GL_SCREEN_KHR 0x9295 +#define GL_OVERLAY_KHR 0x9296 +#define GL_DARKEN_KHR 0x9297 +#define GL_LIGHTEN_KHR 0x9298 +#define GL_COLORDODGE_KHR 0x9299 +#define GL_COLORBURN_KHR 0x929A +#define GL_HARDLIGHT_KHR 0x929B +#define GL_SOFTLIGHT_KHR 0x929C +#define GL_DIFFERENCE_KHR 0x929E +#define GL_EXCLUSION_KHR 0x92A0 +#define GL_HSL_HUE_KHR 0x92AD +#define GL_HSL_SATURATION_KHR 0x92AE +#define GL_HSL_COLOR_KHR 0x92AF +#define GL_HSL_LUMINOSITY_KHR 0x92B0 + typedef void(APIENTRYP PFNGLBLENDBARRIERKHRPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBlendBarrierKHR(void); +#endif +#endif /* GL_KHR_blend_equation_advanced */ + +#ifndef GL_KHR_blend_equation_advanced_coherent +#define GL_KHR_blend_equation_advanced_coherent 1 +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 +#endif /* GL_KHR_blend_equation_advanced_coherent */ + +#ifndef GL_KHR_context_flush_control +#define GL_KHR_context_flush_control 1 +#endif /* GL_KHR_context_flush_control */ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +#endif /* GL_KHR_debug */ + +#ifndef GL_KHR_no_error +#define GL_KHR_no_error 1 +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +#endif /* GL_KHR_no_error */ + +#ifndef GL_KHR_parallel_shader_compile +#define GL_KHR_parallel_shader_compile 1 +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_COMPLETION_STATUS_KHR 0x91B1 + typedef void(APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC)(GLuint count); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMaxShaderCompilerThreadsKHR(GLuint count); +#endif +#endif /* GL_KHR_parallel_shader_compile */ + +#ifndef GL_KHR_robust_buffer_access_behavior +#define GL_KHR_robust_buffer_access_behavior 1 +#endif /* GL_KHR_robust_buffer_access_behavior */ + +#ifndef GL_KHR_robustness +#define GL_KHR_robustness 1 +#define GL_CONTEXT_ROBUST_ACCESS 0x90F3 +#endif /* GL_KHR_robustness */ + +#ifndef GL_KHR_shader_subgroup +#define GL_KHR_shader_subgroup 1 +#define GL_SUBGROUP_SIZE_KHR 0x9532 +#define GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533 +#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534 +#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535 +#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001 +#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002 +#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004 +#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008 +#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010 +#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020 +#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040 +#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080 +#endif /* GL_KHR_shader_subgroup */ + +#ifndef GL_KHR_texture_compression_astc_hdr +#define GL_KHR_texture_compression_astc_hdr 1 +#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 +#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 +#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 +#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 +#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 +#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 +#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 +#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 +#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 +#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 +#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA +#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB +#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC +#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD +#endif /* GL_KHR_texture_compression_astc_hdr */ + +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_KHR_texture_compression_astc_ldr 1 +#endif /* GL_KHR_texture_compression_astc_ldr */ + +#ifndef GL_KHR_texture_compression_astc_sliced_3d +#define GL_KHR_texture_compression_astc_sliced_3d 1 +#endif /* GL_KHR_texture_compression_astc_sliced_3d */ + +#ifndef GL_OES_byte_coordinates +#define GL_OES_byte_coordinates 1 + typedef void(APIENTRYP PFNGLMULTITEXCOORD1BOESPROC)(GLenum texture, GLbyte s); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1BVOESPROC)(GLenum texture, const GLbyte* coords); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2BOESPROC)(GLenum texture, GLbyte s, GLbyte t); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2BVOESPROC)(GLenum texture, const GLbyte* coords); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3BOESPROC)(GLenum texture, GLbyte s, GLbyte t, GLbyte r); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3BVOESPROC)(GLenum texture, const GLbyte* coords); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4BOESPROC)(GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4BVOESPROC)(GLenum texture, const GLbyte* coords); + typedef void(APIENTRYP PFNGLTEXCOORD1BOESPROC)(GLbyte s); + typedef void(APIENTRYP PFNGLTEXCOORD1BVOESPROC)(const GLbyte* coords); + typedef void(APIENTRYP PFNGLTEXCOORD2BOESPROC)(GLbyte s, GLbyte t); + typedef void(APIENTRYP PFNGLTEXCOORD2BVOESPROC)(const GLbyte* coords); + typedef void(APIENTRYP PFNGLTEXCOORD3BOESPROC)(GLbyte s, GLbyte t, GLbyte r); + typedef void(APIENTRYP PFNGLTEXCOORD3BVOESPROC)(const GLbyte* coords); + typedef void(APIENTRYP PFNGLTEXCOORD4BOESPROC)(GLbyte s, GLbyte t, GLbyte r, GLbyte q); + typedef void(APIENTRYP PFNGLTEXCOORD4BVOESPROC)(const GLbyte* coords); + typedef void(APIENTRYP PFNGLVERTEX2BOESPROC)(GLbyte x, GLbyte y); + typedef void(APIENTRYP PFNGLVERTEX2BVOESPROC)(const GLbyte* coords); + typedef void(APIENTRYP PFNGLVERTEX3BOESPROC)(GLbyte x, GLbyte y, GLbyte z); + typedef void(APIENTRYP PFNGLVERTEX3BVOESPROC)(const GLbyte* coords); + typedef void(APIENTRYP PFNGLVERTEX4BOESPROC)(GLbyte x, GLbyte y, GLbyte z, GLbyte w); + typedef void(APIENTRYP PFNGLVERTEX4BVOESPROC)(const GLbyte* coords); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMultiTexCoord1bOES(GLenum texture, GLbyte s); + GLAPI void APIENTRY glMultiTexCoord1bvOES(GLenum texture, const GLbyte* coords); + GLAPI void APIENTRY glMultiTexCoord2bOES(GLenum texture, GLbyte s, GLbyte t); + GLAPI void APIENTRY glMultiTexCoord2bvOES(GLenum texture, const GLbyte* coords); + GLAPI void APIENTRY glMultiTexCoord3bOES(GLenum texture, GLbyte s, GLbyte t, GLbyte r); + GLAPI void APIENTRY glMultiTexCoord3bvOES(GLenum texture, const GLbyte* coords); + GLAPI void APIENTRY glMultiTexCoord4bOES(GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); + GLAPI void APIENTRY glMultiTexCoord4bvOES(GLenum texture, const GLbyte* coords); + GLAPI void APIENTRY glTexCoord1bOES(GLbyte s); + GLAPI void APIENTRY glTexCoord1bvOES(const GLbyte* coords); + GLAPI void APIENTRY glTexCoord2bOES(GLbyte s, GLbyte t); + GLAPI void APIENTRY glTexCoord2bvOES(const GLbyte* coords); + GLAPI void APIENTRY glTexCoord3bOES(GLbyte s, GLbyte t, GLbyte r); + GLAPI void APIENTRY glTexCoord3bvOES(const GLbyte* coords); + GLAPI void APIENTRY glTexCoord4bOES(GLbyte s, GLbyte t, GLbyte r, GLbyte q); + GLAPI void APIENTRY glTexCoord4bvOES(const GLbyte* coords); + GLAPI void APIENTRY glVertex2bOES(GLbyte x, GLbyte y); + GLAPI void APIENTRY glVertex2bvOES(const GLbyte* coords); + GLAPI void APIENTRY glVertex3bOES(GLbyte x, GLbyte y, GLbyte z); + GLAPI void APIENTRY glVertex3bvOES(const GLbyte* coords); + GLAPI void APIENTRY glVertex4bOES(GLbyte x, GLbyte y, GLbyte z, GLbyte w); + GLAPI void APIENTRY glVertex4bvOES(const GLbyte* coords); +#endif +#endif /* GL_OES_byte_coordinates */ + +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#endif /* GL_OES_compressed_paletted_texture */ + +#ifndef GL_OES_fixed_point +#define GL_OES_fixed_point 1 + typedef khronos_int32_t GLfixed; +#define GL_FIXED_OES 0x140C + typedef void(APIENTRYP PFNGLALPHAFUNCXOESPROC)(GLenum func, GLfixed ref); + typedef void(APIENTRYP PFNGLCLEARCOLORXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); + typedef void(APIENTRYP PFNGLCLEARDEPTHXOESPROC)(GLfixed depth); + typedef void(APIENTRYP PFNGLCLIPPLANEXOESPROC)(GLenum plane, const GLfixed* equation); + typedef void(APIENTRYP PFNGLCOLOR4XOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); + typedef void(APIENTRYP PFNGLDEPTHRANGEXOESPROC)(GLfixed n, GLfixed f); + typedef void(APIENTRYP PFNGLFOGXOESPROC)(GLenum pname, GLfixed param); + typedef void(APIENTRYP PFNGLFOGXVOESPROC)(GLenum pname, const GLfixed* param); + typedef void(APIENTRYP PFNGLFRUSTUMXOESPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); + typedef void(APIENTRYP PFNGLGETCLIPPLANEXOESPROC)(GLenum plane, GLfixed* equation); + typedef void(APIENTRYP PFNGLGETFIXEDVOESPROC)(GLenum pname, GLfixed* params); + typedef void(APIENTRYP PFNGLGETTEXENVXVOESPROC)(GLenum target, GLenum pname, GLfixed* params); + typedef void(APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, GLfixed* params); + typedef void(APIENTRYP PFNGLLIGHTMODELXOESPROC)(GLenum pname, GLfixed param); + typedef void(APIENTRYP PFNGLLIGHTMODELXVOESPROC)(GLenum pname, const GLfixed* param); + typedef void(APIENTRYP PFNGLLIGHTXOESPROC)(GLenum light, GLenum pname, GLfixed param); + typedef void(APIENTRYP PFNGLLIGHTXVOESPROC)(GLenum light, GLenum pname, const GLfixed* params); + typedef void(APIENTRYP PFNGLLINEWIDTHXOESPROC)(GLfixed width); + typedef void(APIENTRYP PFNGLLOADMATRIXXOESPROC)(const GLfixed* m); + typedef void(APIENTRYP PFNGLMATERIALXOESPROC)(GLenum face, GLenum pname, GLfixed param); + typedef void(APIENTRYP PFNGLMATERIALXVOESPROC)(GLenum face, GLenum pname, const GLfixed* param); + typedef void(APIENTRYP PFNGLMULTMATRIXXOESPROC)(const GLfixed* m); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4XOESPROC)(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); + typedef void(APIENTRYP PFNGLNORMAL3XOESPROC)(GLfixed nx, GLfixed ny, GLfixed nz); + typedef void(APIENTRYP PFNGLORTHOXOESPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); + typedef void(APIENTRYP PFNGLPOINTPARAMETERXVOESPROC)(GLenum pname, const GLfixed* params); + typedef void(APIENTRYP PFNGLPOINTSIZEXOESPROC)(GLfixed size); + typedef void(APIENTRYP PFNGLPOLYGONOFFSETXOESPROC)(GLfixed factor, GLfixed units); + typedef void(APIENTRYP PFNGLROTATEXOESPROC)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); + typedef void(APIENTRYP PFNGLSCALEXOESPROC)(GLfixed x, GLfixed y, GLfixed z); + typedef void(APIENTRYP PFNGLTEXENVXOESPROC)(GLenum target, GLenum pname, GLfixed param); + typedef void(APIENTRYP PFNGLTEXENVXVOESPROC)(GLenum target, GLenum pname, const GLfixed* params); + typedef void(APIENTRYP PFNGLTEXPARAMETERXOESPROC)(GLenum target, GLenum pname, GLfixed param); + typedef void(APIENTRYP PFNGLTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, const GLfixed* params); + typedef void(APIENTRYP PFNGLTRANSLATEXOESPROC)(GLfixed x, GLfixed y, GLfixed z); + typedef void(APIENTRYP PFNGLACCUMXOESPROC)(GLenum op, GLfixed value); + typedef void(APIENTRYP PFNGLBITMAPXOESPROC)( + GLsizei width, + GLsizei height, + GLfixed xorig, + GLfixed yorig, + GLfixed xmove, + GLfixed ymove, + const GLubyte* bitmap + ); + typedef void(APIENTRYP PFNGLBLENDCOLORXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); + typedef void(APIENTRYP PFNGLCLEARACCUMXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); + typedef void(APIENTRYP PFNGLCOLOR3XOESPROC)(GLfixed red, GLfixed green, GLfixed blue); + typedef void(APIENTRYP PFNGLCOLOR3XVOESPROC)(const GLfixed* components); + typedef void(APIENTRYP PFNGLCOLOR4XVOESPROC)(const GLfixed* components); + typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERXOESPROC)(GLenum target, GLenum pname, GLfixed param); + typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERXVOESPROC)(GLenum target, GLenum pname, const GLfixed* params); + typedef void(APIENTRYP PFNGLEVALCOORD1XOESPROC)(GLfixed u); + typedef void(APIENTRYP PFNGLEVALCOORD1XVOESPROC)(const GLfixed* coords); + typedef void(APIENTRYP PFNGLEVALCOORD2XOESPROC)(GLfixed u, GLfixed v); + typedef void(APIENTRYP PFNGLEVALCOORD2XVOESPROC)(const GLfixed* coords); + typedef void(APIENTRYP PFNGLFEEDBACKBUFFERXOESPROC)(GLsizei n, GLenum type, const GLfixed* buffer); + typedef void(APIENTRYP PFNGLGETCONVOLUTIONPARAMETERXVOESPROC)(GLenum target, GLenum pname, GLfixed* params); + typedef void(APIENTRYP PFNGLGETHISTOGRAMPARAMETERXVOESPROC)(GLenum target, GLenum pname, GLfixed* params); + typedef void(APIENTRYP PFNGLGETLIGHTXOESPROC)(GLenum light, GLenum pname, GLfixed* params); + typedef void(APIENTRYP PFNGLGETMAPXVOESPROC)(GLenum target, GLenum query, GLfixed* v); + typedef void(APIENTRYP PFNGLGETMATERIALXOESPROC)(GLenum face, GLenum pname, GLfixed param); + typedef void(APIENTRYP PFNGLGETPIXELMAPXVPROC)(GLenum map, GLint size, GLfixed* values); + typedef void(APIENTRYP PFNGLGETTEXGENXVOESPROC)(GLenum coord, GLenum pname, GLfixed* params); + typedef void(APIENTRYP + PFNGLGETTEXLEVELPARAMETERXVOESPROC)(GLenum target, GLint level, GLenum pname, GLfixed* params); + typedef void(APIENTRYP PFNGLINDEXXOESPROC)(GLfixed component); + typedef void(APIENTRYP PFNGLINDEXXVOESPROC)(const GLfixed* component); + typedef void(APIENTRYP PFNGLLOADTRANSPOSEMATRIXXOESPROC)(const GLfixed* m); + typedef void(APIENTRYP PFNGLMAP1XOESPROC)( + GLenum target, + GLfixed u1, + GLfixed u2, + GLint stride, + GLint order, + GLfixed points + ); + typedef void(APIENTRYP PFNGLMAP2XOESPROC)( + GLenum target, + GLfixed u1, + GLfixed u2, + GLint ustride, + GLint uorder, + GLfixed v1, + GLfixed v2, + GLint vstride, + GLint vorder, + GLfixed points + ); + typedef void(APIENTRYP PFNGLMAPGRID1XOESPROC)(GLint n, GLfixed u1, GLfixed u2); + typedef void(APIENTRYP PFNGLMAPGRID2XOESPROC)(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); + typedef void(APIENTRYP PFNGLMULTTRANSPOSEMATRIXXOESPROC)(const GLfixed* m); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1XOESPROC)(GLenum texture, GLfixed s); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1XVOESPROC)(GLenum texture, const GLfixed* coords); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2XOESPROC)(GLenum texture, GLfixed s, GLfixed t); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2XVOESPROC)(GLenum texture, const GLfixed* coords); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3XOESPROC)(GLenum texture, GLfixed s, GLfixed t, GLfixed r); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3XVOESPROC)(GLenum texture, const GLfixed* coords); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4XVOESPROC)(GLenum texture, const GLfixed* coords); + typedef void(APIENTRYP PFNGLNORMAL3XVOESPROC)(const GLfixed* coords); + typedef void(APIENTRYP PFNGLPASSTHROUGHXOESPROC)(GLfixed token); + typedef void(APIENTRYP PFNGLPIXELMAPXPROC)(GLenum map, GLint size, const GLfixed* values); + typedef void(APIENTRYP PFNGLPIXELSTOREXPROC)(GLenum pname, GLfixed param); + typedef void(APIENTRYP PFNGLPIXELTRANSFERXOESPROC)(GLenum pname, GLfixed param); + typedef void(APIENTRYP PFNGLPIXELZOOMXOESPROC)(GLfixed xfactor, GLfixed yfactor); + typedef void(APIENTRYP + PFNGLPRIORITIZETEXTURESXOESPROC)(GLsizei n, const GLuint* textures, const GLfixed* priorities); + typedef void(APIENTRYP PFNGLRASTERPOS2XOESPROC)(GLfixed x, GLfixed y); + typedef void(APIENTRYP PFNGLRASTERPOS2XVOESPROC)(const GLfixed* coords); + typedef void(APIENTRYP PFNGLRASTERPOS3XOESPROC)(GLfixed x, GLfixed y, GLfixed z); + typedef void(APIENTRYP PFNGLRASTERPOS3XVOESPROC)(const GLfixed* coords); + typedef void(APIENTRYP PFNGLRASTERPOS4XOESPROC)(GLfixed x, GLfixed y, GLfixed z, GLfixed w); + typedef void(APIENTRYP PFNGLRASTERPOS4XVOESPROC)(const GLfixed* coords); + typedef void(APIENTRYP PFNGLRECTXOESPROC)(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); + typedef void(APIENTRYP PFNGLRECTXVOESPROC)(const GLfixed* v1, const GLfixed* v2); + typedef void(APIENTRYP PFNGLTEXCOORD1XOESPROC)(GLfixed s); + typedef void(APIENTRYP PFNGLTEXCOORD1XVOESPROC)(const GLfixed* coords); + typedef void(APIENTRYP PFNGLTEXCOORD2XOESPROC)(GLfixed s, GLfixed t); + typedef void(APIENTRYP PFNGLTEXCOORD2XVOESPROC)(const GLfixed* coords); + typedef void(APIENTRYP PFNGLTEXCOORD3XOESPROC)(GLfixed s, GLfixed t, GLfixed r); + typedef void(APIENTRYP PFNGLTEXCOORD3XVOESPROC)(const GLfixed* coords); + typedef void(APIENTRYP PFNGLTEXCOORD4XOESPROC)(GLfixed s, GLfixed t, GLfixed r, GLfixed q); + typedef void(APIENTRYP PFNGLTEXCOORD4XVOESPROC)(const GLfixed* coords); + typedef void(APIENTRYP PFNGLTEXGENXOESPROC)(GLenum coord, GLenum pname, GLfixed param); + typedef void(APIENTRYP PFNGLTEXGENXVOESPROC)(GLenum coord, GLenum pname, const GLfixed* params); + typedef void(APIENTRYP PFNGLVERTEX2XOESPROC)(GLfixed x); + typedef void(APIENTRYP PFNGLVERTEX2XVOESPROC)(const GLfixed* coords); + typedef void(APIENTRYP PFNGLVERTEX3XOESPROC)(GLfixed x, GLfixed y); + typedef void(APIENTRYP PFNGLVERTEX3XVOESPROC)(const GLfixed* coords); + typedef void(APIENTRYP PFNGLVERTEX4XOESPROC)(GLfixed x, GLfixed y, GLfixed z); + typedef void(APIENTRYP PFNGLVERTEX4XVOESPROC)(const GLfixed* coords); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glAlphaFuncxOES(GLenum func, GLfixed ref); + GLAPI void APIENTRY glClearColorxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); + GLAPI void APIENTRY glClearDepthxOES(GLfixed depth); + GLAPI void APIENTRY glClipPlanexOES(GLenum plane, const GLfixed* equation); + GLAPI void APIENTRY glColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); + GLAPI void APIENTRY glDepthRangexOES(GLfixed n, GLfixed f); + GLAPI void APIENTRY glFogxOES(GLenum pname, GLfixed param); + GLAPI void APIENTRY glFogxvOES(GLenum pname, const GLfixed* param); + GLAPI void APIENTRY glFrustumxOES(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); + GLAPI void APIENTRY glGetClipPlanexOES(GLenum plane, GLfixed* equation); + GLAPI void APIENTRY glGetFixedvOES(GLenum pname, GLfixed* params); + GLAPI void APIENTRY glGetTexEnvxvOES(GLenum target, GLenum pname, GLfixed* params); + GLAPI void APIENTRY glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed* params); + GLAPI void APIENTRY glLightModelxOES(GLenum pname, GLfixed param); + GLAPI void APIENTRY glLightModelxvOES(GLenum pname, const GLfixed* param); + GLAPI void APIENTRY glLightxOES(GLenum light, GLenum pname, GLfixed param); + GLAPI void APIENTRY glLightxvOES(GLenum light, GLenum pname, const GLfixed* params); + GLAPI void APIENTRY glLineWidthxOES(GLfixed width); + GLAPI void APIENTRY glLoadMatrixxOES(const GLfixed* m); + GLAPI void APIENTRY glMaterialxOES(GLenum face, GLenum pname, GLfixed param); + GLAPI void APIENTRY glMaterialxvOES(GLenum face, GLenum pname, const GLfixed* param); + GLAPI void APIENTRY glMultMatrixxOES(const GLfixed* m); + GLAPI void APIENTRY glMultiTexCoord4xOES(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); + GLAPI void APIENTRY glNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz); + GLAPI void APIENTRY glOrthoxOES(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); + GLAPI void APIENTRY glPointParameterxvOES(GLenum pname, const GLfixed* params); + GLAPI void APIENTRY glPointSizexOES(GLfixed size); + GLAPI void APIENTRY glPolygonOffsetxOES(GLfixed factor, GLfixed units); + GLAPI void APIENTRY glRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); + GLAPI void APIENTRY glScalexOES(GLfixed x, GLfixed y, GLfixed z); + GLAPI void APIENTRY glTexEnvxOES(GLenum target, GLenum pname, GLfixed param); + GLAPI void APIENTRY glTexEnvxvOES(GLenum target, GLenum pname, const GLfixed* params); + GLAPI void APIENTRY glTexParameterxOES(GLenum target, GLenum pname, GLfixed param); + GLAPI void APIENTRY glTexParameterxvOES(GLenum target, GLenum pname, const GLfixed* params); + GLAPI void APIENTRY glTranslatexOES(GLfixed x, GLfixed y, GLfixed z); + GLAPI void APIENTRY glAccumxOES(GLenum op, GLfixed value); + GLAPI void APIENTRY glBitmapxOES( + GLsizei width, + GLsizei height, + GLfixed xorig, + GLfixed yorig, + GLfixed xmove, + GLfixed ymove, + const GLubyte* bitmap + ); + GLAPI void APIENTRY glBlendColorxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); + GLAPI void APIENTRY glClearAccumxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); + GLAPI void APIENTRY glColor3xOES(GLfixed red, GLfixed green, GLfixed blue); + GLAPI void APIENTRY glColor3xvOES(const GLfixed* components); + GLAPI void APIENTRY glColor4xvOES(const GLfixed* components); + GLAPI void APIENTRY glConvolutionParameterxOES(GLenum target, GLenum pname, GLfixed param); + GLAPI void APIENTRY glConvolutionParameterxvOES(GLenum target, GLenum pname, const GLfixed* params); + GLAPI void APIENTRY glEvalCoord1xOES(GLfixed u); + GLAPI void APIENTRY glEvalCoord1xvOES(const GLfixed* coords); + GLAPI void APIENTRY glEvalCoord2xOES(GLfixed u, GLfixed v); + GLAPI void APIENTRY glEvalCoord2xvOES(const GLfixed* coords); + GLAPI void APIENTRY glFeedbackBufferxOES(GLsizei n, GLenum type, const GLfixed* buffer); + GLAPI void APIENTRY glGetConvolutionParameterxvOES(GLenum target, GLenum pname, GLfixed* params); + GLAPI void APIENTRY glGetHistogramParameterxvOES(GLenum target, GLenum pname, GLfixed* params); + GLAPI void APIENTRY glGetLightxOES(GLenum light, GLenum pname, GLfixed* params); + GLAPI void APIENTRY glGetMapxvOES(GLenum target, GLenum query, GLfixed* v); + GLAPI void APIENTRY glGetMaterialxOES(GLenum face, GLenum pname, GLfixed param); + GLAPI void APIENTRY glGetPixelMapxv(GLenum map, GLint size, GLfixed* values); + GLAPI void APIENTRY glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed* params); + GLAPI void APIENTRY glGetTexLevelParameterxvOES(GLenum target, GLint level, GLenum pname, GLfixed* params); + GLAPI void APIENTRY glIndexxOES(GLfixed component); + GLAPI void APIENTRY glIndexxvOES(const GLfixed* component); + GLAPI void APIENTRY glLoadTransposeMatrixxOES(const GLfixed* m); + GLAPI void APIENTRY glMap1xOES(GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); + GLAPI void APIENTRY glMap2xOES( + GLenum target, + GLfixed u1, + GLfixed u2, + GLint ustride, + GLint uorder, + GLfixed v1, + GLfixed v2, + GLint vstride, + GLint vorder, + GLfixed points + ); + GLAPI void APIENTRY glMapGrid1xOES(GLint n, GLfixed u1, GLfixed u2); + GLAPI void APIENTRY glMapGrid2xOES(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); + GLAPI void APIENTRY glMultTransposeMatrixxOES(const GLfixed* m); + GLAPI void APIENTRY glMultiTexCoord1xOES(GLenum texture, GLfixed s); + GLAPI void APIENTRY glMultiTexCoord1xvOES(GLenum texture, const GLfixed* coords); + GLAPI void APIENTRY glMultiTexCoord2xOES(GLenum texture, GLfixed s, GLfixed t); + GLAPI void APIENTRY glMultiTexCoord2xvOES(GLenum texture, const GLfixed* coords); + GLAPI void APIENTRY glMultiTexCoord3xOES(GLenum texture, GLfixed s, GLfixed t, GLfixed r); + GLAPI void APIENTRY glMultiTexCoord3xvOES(GLenum texture, const GLfixed* coords); + GLAPI void APIENTRY glMultiTexCoord4xvOES(GLenum texture, const GLfixed* coords); + GLAPI void APIENTRY glNormal3xvOES(const GLfixed* coords); + GLAPI void APIENTRY glPassThroughxOES(GLfixed token); + GLAPI void APIENTRY glPixelMapx(GLenum map, GLint size, const GLfixed* values); + GLAPI void APIENTRY glPixelStorex(GLenum pname, GLfixed param); + GLAPI void APIENTRY glPixelTransferxOES(GLenum pname, GLfixed param); + GLAPI void APIENTRY glPixelZoomxOES(GLfixed xfactor, GLfixed yfactor); + GLAPI void APIENTRY glPrioritizeTexturesxOES(GLsizei n, const GLuint* textures, const GLfixed* priorities); + GLAPI void APIENTRY glRasterPos2xOES(GLfixed x, GLfixed y); + GLAPI void APIENTRY glRasterPos2xvOES(const GLfixed* coords); + GLAPI void APIENTRY glRasterPos3xOES(GLfixed x, GLfixed y, GLfixed z); + GLAPI void APIENTRY glRasterPos3xvOES(const GLfixed* coords); + GLAPI void APIENTRY glRasterPos4xOES(GLfixed x, GLfixed y, GLfixed z, GLfixed w); + GLAPI void APIENTRY glRasterPos4xvOES(const GLfixed* coords); + GLAPI void APIENTRY glRectxOES(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); + GLAPI void APIENTRY glRectxvOES(const GLfixed* v1, const GLfixed* v2); + GLAPI void APIENTRY glTexCoord1xOES(GLfixed s); + GLAPI void APIENTRY glTexCoord1xvOES(const GLfixed* coords); + GLAPI void APIENTRY glTexCoord2xOES(GLfixed s, GLfixed t); + GLAPI void APIENTRY glTexCoord2xvOES(const GLfixed* coords); + GLAPI void APIENTRY glTexCoord3xOES(GLfixed s, GLfixed t, GLfixed r); + GLAPI void APIENTRY glTexCoord3xvOES(const GLfixed* coords); + GLAPI void APIENTRY glTexCoord4xOES(GLfixed s, GLfixed t, GLfixed r, GLfixed q); + GLAPI void APIENTRY glTexCoord4xvOES(const GLfixed* coords); + GLAPI void APIENTRY glTexGenxOES(GLenum coord, GLenum pname, GLfixed param); + GLAPI void APIENTRY glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed* params); + GLAPI void APIENTRY glVertex2xOES(GLfixed x); + GLAPI void APIENTRY glVertex2xvOES(const GLfixed* coords); + GLAPI void APIENTRY glVertex3xOES(GLfixed x, GLfixed y); + GLAPI void APIENTRY glVertex3xvOES(const GLfixed* coords); + GLAPI void APIENTRY glVertex4xOES(GLfixed x, GLfixed y, GLfixed z); + GLAPI void APIENTRY glVertex4xvOES(const GLfixed* coords); +#endif +#endif /* GL_OES_fixed_point */ + +#ifndef GL_OES_query_matrix +#define GL_OES_query_matrix 1 + typedef GLbitfield(APIENTRYP PFNGLQUERYMATRIXXOESPROC)(GLfixed* mantissa, GLint* exponent); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLbitfield APIENTRY glQueryMatrixxOES(GLfixed* mantissa, GLint* exponent); +#endif +#endif /* GL_OES_query_matrix */ + +#ifndef GL_OES_read_format +#define GL_OES_read_format 1 +#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B +#endif /* GL_OES_read_format */ + +#ifndef GL_OES_single_precision +#define GL_OES_single_precision 1 + typedef void(APIENTRYP PFNGLCLEARDEPTHFOESPROC)(GLclampf depth); + typedef void(APIENTRYP PFNGLCLIPPLANEFOESPROC)(GLenum plane, const GLfloat* equation); + typedef void(APIENTRYP PFNGLDEPTHRANGEFOESPROC)(GLclampf n, GLclampf f); + typedef void(APIENTRYP PFNGLFRUSTUMFOESPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); + typedef void(APIENTRYP PFNGLGETCLIPPLANEFOESPROC)(GLenum plane, GLfloat* equation); + typedef void(APIENTRYP PFNGLORTHOFOESPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glClearDepthfOES(GLclampf depth); + GLAPI void APIENTRY glClipPlanefOES(GLenum plane, const GLfloat* equation); + GLAPI void APIENTRY glDepthRangefOES(GLclampf n, GLclampf f); + GLAPI void APIENTRY glFrustumfOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); + GLAPI void APIENTRY glGetClipPlanefOES(GLenum plane, GLfloat* equation); + GLAPI void APIENTRY glOrthofOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); +#endif +#endif /* GL_OES_single_precision */ + +#ifndef GL_3DFX_multisample +#define GL_3DFX_multisample 1 +#define GL_MULTISAMPLE_3DFX 0x86B2 +#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 +#define GL_SAMPLES_3DFX 0x86B4 +#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 +#endif /* GL_3DFX_multisample */ + +#ifndef GL_3DFX_tbuffer +#define GL_3DFX_tbuffer 1 + typedef void(APIENTRYP PFNGLTBUFFERMASK3DFXPROC)(GLuint mask); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTbufferMask3DFX(GLuint mask); +#endif +#endif /* GL_3DFX_tbuffer */ + +#ifndef GL_3DFX_texture_compression_FXT1 +#define GL_3DFX_texture_compression_FXT1 1 +#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 +#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 +#endif /* GL_3DFX_texture_compression_FXT1 */ + +#ifndef GL_AMD_blend_minmax_factor +#define GL_AMD_blend_minmax_factor 1 +#define GL_FACTOR_MIN_AMD 0x901C +#define GL_FACTOR_MAX_AMD 0x901D +#endif /* GL_AMD_blend_minmax_factor */ + +#ifndef GL_AMD_conservative_depth +#define GL_AMD_conservative_depth 1 +#endif /* GL_AMD_conservative_depth */ + +#ifndef GL_AMD_debug_output +#define GL_AMD_debug_output 1 + typedef void(APIENTRY* GLDEBUGPROCAMD)( + GLuint id, + GLenum category, + GLenum severity, + GLsizei length, + const GLchar* message, + void* userParam + ); +#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 +#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148 +#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 +#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A +#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B +#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C +#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D +#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E +#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F +#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 + typedef void(APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC)( + GLenum category, + GLenum severity, + GLsizei count, + const GLuint* ids, + GLboolean enabled + ); + typedef void(APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC)( + GLenum category, + GLenum severity, + GLuint id, + GLsizei length, + const GLchar* buf + ); + typedef void(APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC)(GLDEBUGPROCAMD callback, void* userParam); + typedef GLuint(APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC)( + GLuint count, + GLsizei bufSize, + GLenum* categories, + GLenum* severities, + GLuint* ids, + GLsizei* lengths, + GLchar* message + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glDebugMessageEnableAMD(GLenum category, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled); + GLAPI void APIENTRY + glDebugMessageInsertAMD(GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar* buf); + GLAPI void APIENTRY glDebugMessageCallbackAMD(GLDEBUGPROCAMD callback, void* userParam); + GLAPI GLuint APIENTRY glGetDebugMessageLogAMD( + GLuint count, + GLsizei bufSize, + GLenum* categories, + GLenum* severities, + GLuint* ids, + GLsizei* lengths, + GLchar* message + ); +#endif +#endif /* GL_AMD_debug_output */ + +#ifndef GL_AMD_depth_clamp_separate +#define GL_AMD_depth_clamp_separate 1 +#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E +#define GL_DEPTH_CLAMP_FAR_AMD 0x901F +#endif /* GL_AMD_depth_clamp_separate */ + +#ifndef GL_AMD_draw_buffers_blend +#define GL_AMD_draw_buffers_blend 1 + typedef void(APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC)(GLuint buf, GLenum src, GLenum dst); + typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)( + GLuint buf, + GLenum srcRGB, + GLenum dstRGB, + GLenum srcAlpha, + GLenum dstAlpha + ); + typedef void(APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC)(GLuint buf, GLenum mode); + typedef void(APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBlendFuncIndexedAMD(GLuint buf, GLenum src, GLenum dst); + GLAPI void APIENTRY + glBlendFuncSeparateIndexedAMD(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); + GLAPI void APIENTRY glBlendEquationIndexedAMD(GLuint buf, GLenum mode); + GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD(GLuint buf, GLenum modeRGB, GLenum modeAlpha); +#endif +#endif /* GL_AMD_draw_buffers_blend */ + +#ifndef GL_AMD_framebuffer_multisample_advanced +#define GL_AMD_framebuffer_multisample_advanced 1 +#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2 +#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3 +#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4 +#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5 +#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6 +#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7 + typedef void(APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)( + GLenum target, + GLsizei samples, + GLsizei storageSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)( + GLuint renderbuffer, + GLsizei samples, + GLsizei storageSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glRenderbufferStorageMultisampleAdvancedAMD( + GLenum target, + GLsizei samples, + GLsizei storageSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleAdvancedAMD( + GLuint renderbuffer, + GLsizei samples, + GLsizei storageSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); +#endif +#endif /* GL_AMD_framebuffer_multisample_advanced */ + +#ifndef GL_AMD_framebuffer_sample_positions +#define GL_AMD_framebuffer_sample_positions 1 +#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F +#define GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD 0x91AE +#define GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD 0x91AF +#define GL_ALL_PIXELS_AMD 0xFFFFFFFF + typedef void(APIENTRYP PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)( + GLenum target, + GLuint numsamples, + GLuint pixelindex, + const GLfloat* values + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)( + GLuint framebuffer, + GLuint numsamples, + GLuint pixelindex, + const GLfloat* values + ); + typedef void(APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC)( + GLenum target, + GLenum pname, + GLuint numsamples, + GLuint pixelindex, + GLsizei size, + GLfloat* values + ); + typedef void(APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC)( + GLuint framebuffer, + GLenum pname, + GLuint numsamples, + GLuint pixelindex, + GLsizei size, + GLfloat* values + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glFramebufferSamplePositionsfvAMD(GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat* values); + GLAPI void APIENTRY glNamedFramebufferSamplePositionsfvAMD( + GLuint framebuffer, + GLuint numsamples, + GLuint pixelindex, + const GLfloat* values + ); + GLAPI void APIENTRY glGetFramebufferParameterfvAMD( + GLenum target, + GLenum pname, + GLuint numsamples, + GLuint pixelindex, + GLsizei size, + GLfloat* values + ); + GLAPI void APIENTRY glGetNamedFramebufferParameterfvAMD( + GLuint framebuffer, + GLenum pname, + GLuint numsamples, + GLuint pixelindex, + GLsizei size, + GLfloat* values + ); +#endif +#endif /* GL_AMD_framebuffer_sample_positions */ + +#ifndef GL_AMD_gcn_shader +#define GL_AMD_gcn_shader 1 +#endif /* GL_AMD_gcn_shader */ + +#ifndef GL_AMD_gpu_shader_half_float +#define GL_AMD_gpu_shader_half_float 1 +#define GL_FLOAT16_NV 0x8FF8 +#define GL_FLOAT16_VEC2_NV 0x8FF9 +#define GL_FLOAT16_VEC3_NV 0x8FFA +#define GL_FLOAT16_VEC4_NV 0x8FFB +#define GL_FLOAT16_MAT2_AMD 0x91C5 +#define GL_FLOAT16_MAT3_AMD 0x91C6 +#define GL_FLOAT16_MAT4_AMD 0x91C7 +#define GL_FLOAT16_MAT2x3_AMD 0x91C8 +#define GL_FLOAT16_MAT2x4_AMD 0x91C9 +#define GL_FLOAT16_MAT3x2_AMD 0x91CA +#define GL_FLOAT16_MAT3x4_AMD 0x91CB +#define GL_FLOAT16_MAT4x2_AMD 0x91CC +#define GL_FLOAT16_MAT4x3_AMD 0x91CD +#endif /* GL_AMD_gpu_shader_half_float */ + +#ifndef GL_AMD_gpu_shader_int16 +#define GL_AMD_gpu_shader_int16 1 +#endif /* GL_AMD_gpu_shader_int16 */ + +#ifndef GL_AMD_gpu_shader_int64 +#define GL_AMD_gpu_shader_int64 1 + typedef khronos_int64_t GLint64EXT; +#define GL_INT64_NV 0x140E +#define GL_UNSIGNED_INT64_NV 0x140F +#define GL_INT8_NV 0x8FE0 +#define GL_INT8_VEC2_NV 0x8FE1 +#define GL_INT8_VEC3_NV 0x8FE2 +#define GL_INT8_VEC4_NV 0x8FE3 +#define GL_INT16_NV 0x8FE4 +#define GL_INT16_VEC2_NV 0x8FE5 +#define GL_INT16_VEC3_NV 0x8FE6 +#define GL_INT16_VEC4_NV 0x8FE7 +#define GL_INT64_VEC2_NV 0x8FE9 +#define GL_INT64_VEC3_NV 0x8FEA +#define GL_INT64_VEC4_NV 0x8FEB +#define GL_UNSIGNED_INT8_NV 0x8FEC +#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED +#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE +#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF +#define GL_UNSIGNED_INT16_NV 0x8FF0 +#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 +#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 +#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 +#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 + typedef void(APIENTRYP PFNGLUNIFORM1I64NVPROC)(GLint location, GLint64EXT x); + typedef void(APIENTRYP PFNGLUNIFORM2I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y); + typedef void(APIENTRYP PFNGLUNIFORM3I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); + typedef void(APIENTRYP + PFNGLUNIFORM4I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); + typedef void(APIENTRYP PFNGLUNIFORM1I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT* value); + typedef void(APIENTRYP PFNGLUNIFORM2I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT* value); + typedef void(APIENTRYP PFNGLUNIFORM3I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT* value); + typedef void(APIENTRYP PFNGLUNIFORM4I64VNVPROC)(GLint location, GLsizei count, const GLint64EXT* value); + typedef void(APIENTRYP PFNGLUNIFORM1UI64NVPROC)(GLint location, GLuint64EXT x); + typedef void(APIENTRYP PFNGLUNIFORM2UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y); + typedef void(APIENTRYP PFNGLUNIFORM3UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + typedef void(APIENTRYP PFNGLUNIFORM4UI64NVPROC)( + GLint location, + GLuint64EXT x, + GLuint64EXT y, + GLuint64EXT z, + GLuint64EXT w + ); + typedef void(APIENTRYP PFNGLUNIFORM1UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT* value); + typedef void(APIENTRYP PFNGLUNIFORM2UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT* value); + typedef void(APIENTRYP PFNGLUNIFORM3UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT* value); + typedef void(APIENTRYP PFNGLUNIFORM4UI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT* value); + typedef void(APIENTRYP PFNGLGETUNIFORMI64VNVPROC)(GLuint program, GLint location, GLint64EXT* params); + typedef void(APIENTRYP PFNGLGETUNIFORMUI64VNVPROC)(GLuint program, GLint location, GLuint64EXT* params); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC)(GLuint program, GLint location, GLint64EXT x); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC)(GLuint program, GLint location, GLint64EXT x, GLint64EXT y); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC)( + GLuint program, + GLint location, + GLint64EXT x, + GLint64EXT y, + GLint64EXT z + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC)( + GLuint program, + GLint location, + GLint64EXT x, + GLint64EXT y, + GLint64EXT z, + GLint64EXT w + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64EXT* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64EXT* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64EXT* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLint64EXT* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM2UI64NVPROC)(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC)( + GLuint program, + GLint location, + GLuint64EXT x, + GLuint64EXT y, + GLuint64EXT z + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC)( + GLuint program, + GLint location, + GLuint64EXT x, + GLuint64EXT y, + GLuint64EXT z, + GLuint64EXT w + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64EXT* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64EXT* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64EXT* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64EXT* value + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glUniform1i64NV(GLint location, GLint64EXT x); + GLAPI void APIENTRY glUniform2i64NV(GLint location, GLint64EXT x, GLint64EXT y); + GLAPI void APIENTRY glUniform3i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); + GLAPI void APIENTRY glUniform4i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); + GLAPI void APIENTRY glUniform1i64vNV(GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glUniform2i64vNV(GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glUniform3i64vNV(GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glUniform4i64vNV(GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glUniform1ui64NV(GLint location, GLuint64EXT x); + GLAPI void APIENTRY glUniform2ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y); + GLAPI void APIENTRY glUniform3ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + GLAPI void APIENTRY glUniform4ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); + GLAPI void APIENTRY glUniform1ui64vNV(GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY glUniform2ui64vNV(GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY glUniform3ui64vNV(GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY glUniform4ui64vNV(GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY glGetUniformi64vNV(GLuint program, GLint location, GLint64EXT* params); + GLAPI void APIENTRY glGetUniformui64vNV(GLuint program, GLint location, GLuint64EXT* params); + GLAPI void APIENTRY glProgramUniform1i64NV(GLuint program, GLint location, GLint64EXT x); + GLAPI void APIENTRY glProgramUniform2i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y); + GLAPI void APIENTRY + glProgramUniform3i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); + GLAPI void APIENTRY + glProgramUniform4i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); + GLAPI void APIENTRY glProgramUniform1i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glProgramUniform2i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glProgramUniform3i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glProgramUniform4i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT* value); + GLAPI void APIENTRY glProgramUniform1ui64NV(GLuint program, GLint location, GLuint64EXT x); + GLAPI void APIENTRY glProgramUniform2ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); + GLAPI void APIENTRY + glProgramUniform3ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + GLAPI void APIENTRY + glProgramUniform4ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); + GLAPI void APIENTRY + glProgramUniform1ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY + glProgramUniform2ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY + glProgramUniform3ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY + glProgramUniform4ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +#endif +#endif /* GL_AMD_gpu_shader_int64 */ + +#ifndef GL_AMD_interleaved_elements +#define GL_AMD_interleaved_elements 1 +#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4 +#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5 + typedef void(APIENTRYP PFNGLVERTEXATTRIBPARAMETERIAMDPROC)(GLuint index, GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glVertexAttribParameteriAMD(GLuint index, GLenum pname, GLint param); +#endif +#endif /* GL_AMD_interleaved_elements */ + +#ifndef GL_AMD_multi_draw_indirect +#define GL_AMD_multi_draw_indirect 1 + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)( + GLenum mode, + const void* indirect, + GLsizei primcount, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)( + GLenum mode, + GLenum type, + const void* indirect, + GLsizei primcount, + GLsizei stride + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glMultiDrawArraysIndirectAMD(GLenum mode, const void* indirect, GLsizei primcount, GLsizei stride); + GLAPI void APIENTRY + glMultiDrawElementsIndirectAMD(GLenum mode, GLenum type, const void* indirect, GLsizei primcount, GLsizei stride); +#endif +#endif /* GL_AMD_multi_draw_indirect */ + +#ifndef GL_AMD_name_gen_delete +#define GL_AMD_name_gen_delete 1 +#define GL_DATA_BUFFER_AMD 0x9151 +#define GL_PERFORMANCE_MONITOR_AMD 0x9152 +#define GL_QUERY_OBJECT_AMD 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 +#define GL_SAMPLER_OBJECT_AMD 0x9155 + typedef void(APIENTRYP PFNGLGENNAMESAMDPROC)(GLenum identifier, GLuint num, GLuint* names); + typedef void(APIENTRYP PFNGLDELETENAMESAMDPROC)(GLenum identifier, GLuint num, const GLuint* names); + typedef GLboolean(APIENTRYP PFNGLISNAMEAMDPROC)(GLenum identifier, GLuint name); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGenNamesAMD(GLenum identifier, GLuint num, GLuint* names); + GLAPI void APIENTRY glDeleteNamesAMD(GLenum identifier, GLuint num, const GLuint* names); + GLAPI GLboolean APIENTRY glIsNameAMD(GLenum identifier, GLuint name); +#endif +#endif /* GL_AMD_name_gen_delete */ + +#ifndef GL_AMD_occlusion_query_event +#define GL_AMD_occlusion_query_event 1 +#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F +#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001 +#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002 +#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004 +#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008 +#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF + typedef void(APIENTRYP PFNGLQUERYOBJECTPARAMETERUIAMDPROC)(GLenum target, GLuint id, GLenum pname, GLuint param); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glQueryObjectParameteruiAMD(GLenum target, GLuint id, GLenum pname, GLuint param); +#endif +#endif /* GL_AMD_occlusion_query_event */ + +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFMON_RESULT_AMD 0x8BC6 + typedef void(APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC)(GLint* numGroups, GLsizei groupsSize, GLuint* groups); + typedef void(APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC)( + GLuint group, + GLint* numCounters, + GLint* maxActiveCounters, + GLsizei counterSize, + GLuint* counters + ); + typedef void(APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)( + GLuint group, + GLsizei bufSize, + GLsizei* length, + GLchar* groupString + ); + typedef void(APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)( + GLuint group, + GLuint counter, + GLsizei bufSize, + GLsizei* length, + GLchar* counterString + ); + typedef void(APIENTRYP + PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)(GLuint group, GLuint counter, GLenum pname, void* data); + typedef void(APIENTRYP PFNGLGENPERFMONITORSAMDPROC)(GLsizei n, GLuint* monitors); + typedef void(APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC)(GLsizei n, GLuint* monitors); + typedef void(APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)( + GLuint monitor, + GLboolean enable, + GLuint group, + GLint numCounters, + GLuint* counterList + ); + typedef void(APIENTRYP PFNGLBEGINPERFMONITORAMDPROC)(GLuint monitor); + typedef void(APIENTRYP PFNGLENDPERFMONITORAMDPROC)(GLuint monitor); + typedef void(APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)( + GLuint monitor, + GLenum pname, + GLsizei dataSize, + GLuint* data, + GLint* bytesWritten + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGetPerfMonitorGroupsAMD(GLint* numGroups, GLsizei groupsSize, GLuint* groups); + GLAPI void APIENTRY glGetPerfMonitorCountersAMD( + GLuint group, + GLint* numCounters, + GLint* maxActiveCounters, + GLsizei counterSize, + GLuint* counters + ); + GLAPI void APIENTRY + glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei* length, GLchar* groupString); + GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD( + GLuint group, + GLuint counter, + GLsizei bufSize, + GLsizei* length, + GLchar* counterString + ); + GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, void* data); + GLAPI void APIENTRY glGenPerfMonitorsAMD(GLsizei n, GLuint* monitors); + GLAPI void APIENTRY glDeletePerfMonitorsAMD(GLsizei n, GLuint* monitors); + GLAPI void APIENTRY glSelectPerfMonitorCountersAMD( + GLuint monitor, + GLboolean enable, + GLuint group, + GLint numCounters, + GLuint* counterList + ); + GLAPI void APIENTRY glBeginPerfMonitorAMD(GLuint monitor); + GLAPI void APIENTRY glEndPerfMonitorAMD(GLuint monitor); + GLAPI void APIENTRY + glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint* bytesWritten); +#endif +#endif /* GL_AMD_performance_monitor */ + +#ifndef GL_AMD_pinned_memory +#define GL_AMD_pinned_memory 1 +#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160 +#endif /* GL_AMD_pinned_memory */ + +#ifndef GL_AMD_query_buffer_object +#define GL_AMD_query_buffer_object 1 +#define GL_QUERY_BUFFER_AMD 0x9192 +#define GL_QUERY_BUFFER_BINDING_AMD 0x9193 +#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194 +#endif /* GL_AMD_query_buffer_object */ + +#ifndef GL_AMD_sample_positions +#define GL_AMD_sample_positions 1 + typedef void(APIENTRYP PFNGLSETMULTISAMPLEFVAMDPROC)(GLenum pname, GLuint index, const GLfloat* val); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glSetMultisamplefvAMD(GLenum pname, GLuint index, const GLfloat* val); +#endif +#endif /* GL_AMD_sample_positions */ + +#ifndef GL_AMD_seamless_cubemap_per_texture +#define GL_AMD_seamless_cubemap_per_texture 1 +#endif /* GL_AMD_seamless_cubemap_per_texture */ + +#ifndef GL_AMD_shader_atomic_counter_ops +#define GL_AMD_shader_atomic_counter_ops 1 +#endif /* GL_AMD_shader_atomic_counter_ops */ + +#ifndef GL_AMD_shader_ballot +#define GL_AMD_shader_ballot 1 +#endif /* GL_AMD_shader_ballot */ + +#ifndef GL_AMD_shader_explicit_vertex_parameter +#define GL_AMD_shader_explicit_vertex_parameter 1 +#endif /* GL_AMD_shader_explicit_vertex_parameter */ + +#ifndef GL_AMD_shader_gpu_shader_half_float_fetch +#define GL_AMD_shader_gpu_shader_half_float_fetch 1 +#endif /* GL_AMD_shader_gpu_shader_half_float_fetch */ + +#ifndef GL_AMD_shader_image_load_store_lod +#define GL_AMD_shader_image_load_store_lod 1 +#endif /* GL_AMD_shader_image_load_store_lod */ + +#ifndef GL_AMD_shader_stencil_export +#define GL_AMD_shader_stencil_export 1 +#endif /* GL_AMD_shader_stencil_export */ + +#ifndef GL_AMD_shader_trinary_minmax +#define GL_AMD_shader_trinary_minmax 1 +#endif /* GL_AMD_shader_trinary_minmax */ + +#ifndef GL_AMD_sparse_texture +#define GL_AMD_sparse_texture 1 +#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197 +#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A +#define GL_MIN_SPARSE_LEVEL_AMD 0x919B +#define GL_MIN_LOD_WARNING_AMD 0x919C +#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001 + typedef void(APIENTRYP PFNGLTEXSTORAGESPARSEAMDPROC)( + GLenum target, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLsizei layers, + GLbitfield flags + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGESPARSEAMDPROC)( + GLuint texture, + GLenum target, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLsizei layers, + GLbitfield flags + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTexStorageSparseAMD( + GLenum target, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLsizei layers, + GLbitfield flags + ); + GLAPI void APIENTRY glTextureStorageSparseAMD( + GLuint texture, + GLenum target, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLsizei layers, + GLbitfield flags + ); +#endif +#endif /* GL_AMD_sparse_texture */ + +#ifndef GL_AMD_stencil_operation_extended +#define GL_AMD_stencil_operation_extended 1 +#define GL_SET_AMD 0x874A +#define GL_REPLACE_VALUE_AMD 0x874B +#define GL_STENCIL_OP_VALUE_AMD 0x874C +#define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D + typedef void(APIENTRYP PFNGLSTENCILOPVALUEAMDPROC)(GLenum face, GLuint value); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glStencilOpValueAMD(GLenum face, GLuint value); +#endif +#endif /* GL_AMD_stencil_operation_extended */ + +#ifndef GL_AMD_texture_gather_bias_lod +#define GL_AMD_texture_gather_bias_lod 1 +#endif /* GL_AMD_texture_gather_bias_lod */ + +#ifndef GL_AMD_texture_texture4 +#define GL_AMD_texture_texture4 1 +#endif /* GL_AMD_texture_texture4 */ + +#ifndef GL_AMD_transform_feedback3_lines_triangles +#define GL_AMD_transform_feedback3_lines_triangles 1 +#endif /* GL_AMD_transform_feedback3_lines_triangles */ + +#ifndef GL_AMD_transform_feedback4 +#define GL_AMD_transform_feedback4 1 +#define GL_STREAM_RASTERIZATION_AMD 0x91A0 +#endif /* GL_AMD_transform_feedback4 */ + +#ifndef GL_AMD_vertex_shader_layer +#define GL_AMD_vertex_shader_layer 1 +#endif /* GL_AMD_vertex_shader_layer */ + +#ifndef GL_AMD_vertex_shader_tessellator +#define GL_AMD_vertex_shader_tessellator 1 +#define GL_SAMPLER_BUFFER_AMD 0x9001 +#define GL_INT_SAMPLER_BUFFER_AMD 0x9002 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 +#define GL_TESSELLATION_MODE_AMD 0x9004 +#define GL_TESSELLATION_FACTOR_AMD 0x9005 +#define GL_DISCRETE_AMD 0x9006 +#define GL_CONTINUOUS_AMD 0x9007 + typedef void(APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC)(GLfloat factor); + typedef void(APIENTRYP PFNGLTESSELLATIONMODEAMDPROC)(GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTessellationFactorAMD(GLfloat factor); + GLAPI void APIENTRY glTessellationModeAMD(GLenum mode); +#endif +#endif /* GL_AMD_vertex_shader_tessellator */ + +#ifndef GL_AMD_vertex_shader_viewport_index +#define GL_AMD_vertex_shader_viewport_index 1 +#endif /* GL_AMD_vertex_shader_viewport_index */ + +#ifndef GL_APPLE_aux_depth_stencil +#define GL_APPLE_aux_depth_stencil 1 +#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 +#endif /* GL_APPLE_aux_depth_stencil */ + +#ifndef GL_APPLE_client_storage +#define GL_APPLE_client_storage 1 +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 +#endif /* GL_APPLE_client_storage */ + +#ifndef GL_APPLE_element_array +#define GL_APPLE_element_array 1 +#define GL_ELEMENT_ARRAY_APPLE 0x8A0C +#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D +#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E + typedef void(APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC)(GLenum type, const void* pointer); + typedef void(APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC)(GLenum mode, GLint first, GLsizei count); + typedef void(APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)( + GLenum mode, + GLuint start, + GLuint end, + GLint first, + GLsizei count + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)( + GLenum mode, + const GLint* first, + const GLsizei* count, + GLsizei primcount + ); + typedef void(APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)( + GLenum mode, + GLuint start, + GLuint end, + const GLint* first, + const GLsizei* count, + GLsizei primcount + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glElementPointerAPPLE(GLenum type, const void* pointer); + GLAPI void APIENTRY glDrawElementArrayAPPLE(GLenum mode, GLint first, GLsizei count); + GLAPI void APIENTRY glDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); + GLAPI void APIENTRY + glMultiDrawElementArrayAPPLE(GLenum mode, const GLint* first, const GLsizei* count, GLsizei primcount); + GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE( + GLenum mode, + GLuint start, + GLuint end, + const GLint* first, + const GLsizei* count, + GLsizei primcount + ); +#endif +#endif /* GL_APPLE_element_array */ + +#ifndef GL_APPLE_fence +#define GL_APPLE_fence 1 +#define GL_DRAW_PIXELS_APPLE 0x8A0A +#define GL_FENCE_APPLE 0x8A0B + typedef void(APIENTRYP PFNGLGENFENCESAPPLEPROC)(GLsizei n, GLuint* fences); + typedef void(APIENTRYP PFNGLDELETEFENCESAPPLEPROC)(GLsizei n, const GLuint* fences); + typedef void(APIENTRYP PFNGLSETFENCEAPPLEPROC)(GLuint fence); + typedef GLboolean(APIENTRYP PFNGLISFENCEAPPLEPROC)(GLuint fence); + typedef GLboolean(APIENTRYP PFNGLTESTFENCEAPPLEPROC)(GLuint fence); + typedef void(APIENTRYP PFNGLFINISHFENCEAPPLEPROC)(GLuint fence); + typedef GLboolean(APIENTRYP PFNGLTESTOBJECTAPPLEPROC)(GLenum object, GLuint name); + typedef void(APIENTRYP PFNGLFINISHOBJECTAPPLEPROC)(GLenum object, GLint name); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGenFencesAPPLE(GLsizei n, GLuint* fences); + GLAPI void APIENTRY glDeleteFencesAPPLE(GLsizei n, const GLuint* fences); + GLAPI void APIENTRY glSetFenceAPPLE(GLuint fence); + GLAPI GLboolean APIENTRY glIsFenceAPPLE(GLuint fence); + GLAPI GLboolean APIENTRY glTestFenceAPPLE(GLuint fence); + GLAPI void APIENTRY glFinishFenceAPPLE(GLuint fence); + GLAPI GLboolean APIENTRY glTestObjectAPPLE(GLenum object, GLuint name); + GLAPI void APIENTRY glFinishObjectAPPLE(GLenum object, GLint name); +#endif +#endif /* GL_APPLE_fence */ + +#ifndef GL_APPLE_float_pixels +#define GL_APPLE_float_pixels 1 +#define GL_HALF_APPLE 0x140B +#define GL_RGBA_FLOAT32_APPLE 0x8814 +#define GL_RGB_FLOAT32_APPLE 0x8815 +#define GL_ALPHA_FLOAT32_APPLE 0x8816 +#define GL_INTENSITY_FLOAT32_APPLE 0x8817 +#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 +#define GL_RGBA_FLOAT16_APPLE 0x881A +#define GL_RGB_FLOAT16_APPLE 0x881B +#define GL_ALPHA_FLOAT16_APPLE 0x881C +#define GL_INTENSITY_FLOAT16_APPLE 0x881D +#define GL_LUMINANCE_FLOAT16_APPLE 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F +#define GL_COLOR_FLOAT_APPLE 0x8A0F +#endif /* GL_APPLE_float_pixels */ + +#ifndef GL_APPLE_flush_buffer_range +#define GL_APPLE_flush_buffer_range 1 +#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 +#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 + typedef void(APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC)(GLenum target, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)(GLenum target, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBufferParameteriAPPLE(GLenum target, GLenum pname, GLint param); + GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE(GLenum target, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_APPLE_flush_buffer_range */ + +#ifndef GL_APPLE_object_purgeable +#define GL_APPLE_object_purgeable 1 +#define GL_BUFFER_OBJECT_APPLE 0x85B3 +#define GL_RELEASED_APPLE 0x8A19 +#define GL_VOLATILE_APPLE 0x8A1A +#define GL_RETAINED_APPLE 0x8A1B +#define GL_UNDEFINED_APPLE 0x8A1C +#define GL_PURGEABLE_APPLE 0x8A1D + typedef GLenum(APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, GLenum option); + typedef GLenum(APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, GLenum option); + typedef void(APIENTRYP + PFNGLGETOBJECTPARAMETERIVAPPLEPROC)(GLenum objectType, GLuint name, GLenum pname, GLint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLenum APIENTRY glObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option); + GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option); + GLAPI void APIENTRY glGetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, GLint* params); +#endif +#endif /* GL_APPLE_object_purgeable */ + +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 +#define GL_RGB_422_APPLE 0x8A1F +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_RGB_RAW_422_APPLE 0x8A51 +#endif /* GL_APPLE_rgb_422 */ + +#ifndef GL_APPLE_row_bytes +#define GL_APPLE_row_bytes 1 +#define GL_PACK_ROW_BYTES_APPLE 0x8A15 +#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 +#endif /* GL_APPLE_row_bytes */ + +#ifndef GL_APPLE_specular_vector +#define GL_APPLE_specular_vector 1 +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 +#endif /* GL_APPLE_specular_vector */ + +#ifndef GL_APPLE_texture_range +#define GL_APPLE_texture_range 1 +#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 +#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 +#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC +#define GL_STORAGE_PRIVATE_APPLE 0x85BD +#define GL_STORAGE_CACHED_APPLE 0x85BE +#define GL_STORAGE_SHARED_APPLE 0x85BF + typedef void(APIENTRYP PFNGLTEXTURERANGEAPPLEPROC)(GLenum target, GLsizei length, const void* pointer); + typedef void(APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)(GLenum target, GLenum pname, void** params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTextureRangeAPPLE(GLenum target, GLsizei length, const void* pointer); + GLAPI void APIENTRY glGetTexParameterPointervAPPLE(GLenum target, GLenum pname, void** params); +#endif +#endif /* GL_APPLE_texture_range */ + +#ifndef GL_APPLE_transform_hint +#define GL_APPLE_transform_hint 1 +#define GL_TRANSFORM_HINT_APPLE 0x85B1 +#endif /* GL_APPLE_transform_hint */ + +#ifndef GL_APPLE_vertex_array_object +#define GL_APPLE_vertex_array_object 1 +#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 + typedef void(APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC)(GLuint array); + typedef void(APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC)(GLsizei n, const GLuint* arrays); + typedef void(APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC)(GLsizei n, GLuint* arrays); + typedef GLboolean(APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC)(GLuint array); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBindVertexArrayAPPLE(GLuint array); + GLAPI void APIENTRY glDeleteVertexArraysAPPLE(GLsizei n, const GLuint* arrays); + GLAPI void APIENTRY glGenVertexArraysAPPLE(GLsizei n, GLuint* arrays); + GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE(GLuint array); +#endif +#endif /* GL_APPLE_vertex_array_object */ + +#ifndef GL_APPLE_vertex_array_range +#define GL_APPLE_vertex_array_range 1 +#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E +#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F +#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 +#define GL_STORAGE_CLIENT_APPLE 0x85B4 + typedef void(APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, void* pointer); + typedef void(APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, void* pointer); + typedef void(APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)(GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glVertexArrayRangeAPPLE(GLsizei length, void* pointer); + GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE(GLsizei length, void* pointer); + GLAPI void APIENTRY glVertexArrayParameteriAPPLE(GLenum pname, GLint param); +#endif +#endif /* GL_APPLE_vertex_array_range */ + +#ifndef GL_APPLE_vertex_program_evaluators +#define GL_APPLE_vertex_program_evaluators 1 +#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 +#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 +#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 +#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 +#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 +#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 +#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 +#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 +#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 +#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 + typedef void(APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname); + typedef void(APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname); + typedef GLboolean(APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)(GLuint index, GLenum pname); + typedef void(APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC)( + GLuint index, + GLuint size, + GLdouble u1, + GLdouble u2, + GLint stride, + GLint order, + const GLdouble* points + ); + typedef void(APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC)( + GLuint index, + GLuint size, + GLfloat u1, + GLfloat u2, + GLint stride, + GLint order, + const GLfloat* points + ); + typedef void(APIENTRYP PFNGLMAPVERTEXATTRIB2DAPPLEPROC)( + GLuint index, + GLuint size, + GLdouble u1, + GLdouble u2, + GLint ustride, + GLint uorder, + GLdouble v1, + GLdouble v2, + GLint vstride, + GLint vorder, + const GLdouble* points + ); + typedef void(APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC)( + GLuint index, + GLuint size, + GLfloat u1, + GLfloat u2, + GLint ustride, + GLint uorder, + GLfloat v1, + GLfloat v2, + GLint vstride, + GLint vorder, + const GLfloat* points + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glEnableVertexAttribAPPLE(GLuint index, GLenum pname); + GLAPI void APIENTRY glDisableVertexAttribAPPLE(GLuint index, GLenum pname); + GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE(GLuint index, GLenum pname); + GLAPI void APIENTRY glMapVertexAttrib1dAPPLE( + GLuint index, + GLuint size, + GLdouble u1, + GLdouble u2, + GLint stride, + GLint order, + const GLdouble* points + ); + GLAPI void APIENTRY glMapVertexAttrib1fAPPLE( + GLuint index, + GLuint size, + GLfloat u1, + GLfloat u2, + GLint stride, + GLint order, + const GLfloat* points + ); + GLAPI void APIENTRY glMapVertexAttrib2dAPPLE( + GLuint index, + GLuint size, + GLdouble u1, + GLdouble u2, + GLint ustride, + GLint uorder, + GLdouble v1, + GLdouble v2, + GLint vstride, + GLint vorder, + const GLdouble* points + ); + GLAPI void APIENTRY glMapVertexAttrib2fAPPLE( + GLuint index, + GLuint size, + GLfloat u1, + GLfloat u2, + GLint ustride, + GLint uorder, + GLfloat v1, + GLfloat v2, + GLint vstride, + GLint vorder, + const GLfloat* points + ); +#endif +#endif /* GL_APPLE_vertex_program_evaluators */ + +#ifndef GL_APPLE_ycbcr_422 +#define GL_APPLE_ycbcr_422 1 +#define GL_YCBCR_422_APPLE 0x85B9 +#endif /* GL_APPLE_ycbcr_422 */ + +#ifndef GL_ATI_draw_buffers +#define GL_ATI_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 +#define GL_DRAW_BUFFER0_ATI 0x8825 +#define GL_DRAW_BUFFER1_ATI 0x8826 +#define GL_DRAW_BUFFER2_ATI 0x8827 +#define GL_DRAW_BUFFER3_ATI 0x8828 +#define GL_DRAW_BUFFER4_ATI 0x8829 +#define GL_DRAW_BUFFER5_ATI 0x882A +#define GL_DRAW_BUFFER6_ATI 0x882B +#define GL_DRAW_BUFFER7_ATI 0x882C +#define GL_DRAW_BUFFER8_ATI 0x882D +#define GL_DRAW_BUFFER9_ATI 0x882E +#define GL_DRAW_BUFFER10_ATI 0x882F +#define GL_DRAW_BUFFER11_ATI 0x8830 +#define GL_DRAW_BUFFER12_ATI 0x8831 +#define GL_DRAW_BUFFER13_ATI 0x8832 +#define GL_DRAW_BUFFER14_ATI 0x8833 +#define GL_DRAW_BUFFER15_ATI 0x8834 + typedef void(APIENTRYP PFNGLDRAWBUFFERSATIPROC)(GLsizei n, const GLenum* bufs); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawBuffersATI(GLsizei n, const GLenum* bufs); +#endif +#endif /* GL_ATI_draw_buffers */ + +#ifndef GL_ATI_element_array +#define GL_ATI_element_array 1 +#define GL_ELEMENT_ARRAY_ATI 0x8768 +#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 +#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A + typedef void(APIENTRYP PFNGLELEMENTPOINTERATIPROC)(GLenum type, const void* pointer); + typedef void(APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC)(GLenum mode, GLsizei count); + typedef void(APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glElementPointerATI(GLenum type, const void* pointer); + GLAPI void APIENTRY glDrawElementArrayATI(GLenum mode, GLsizei count); + GLAPI void APIENTRY glDrawRangeElementArrayATI(GLenum mode, GLuint start, GLuint end, GLsizei count); +#endif +#endif /* GL_ATI_element_array */ + +#ifndef GL_ATI_envmap_bumpmap +#define GL_ATI_envmap_bumpmap 1 +#define GL_BUMP_ROT_MATRIX_ATI 0x8775 +#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 +#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 +#define GL_BUMP_TEX_UNITS_ATI 0x8778 +#define GL_DUDV_ATI 0x8779 +#define GL_DU8DV8_ATI 0x877A +#define GL_BUMP_ENVMAP_ATI 0x877B +#define GL_BUMP_TARGET_ATI 0x877C + typedef void(APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC)(GLenum pname, const GLint* param); + typedef void(APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC)(GLenum pname, const GLfloat* param); + typedef void(APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC)(GLenum pname, GLint* param); + typedef void(APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC)(GLenum pname, GLfloat* param); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTexBumpParameterivATI(GLenum pname, const GLint* param); + GLAPI void APIENTRY glTexBumpParameterfvATI(GLenum pname, const GLfloat* param); + GLAPI void APIENTRY glGetTexBumpParameterivATI(GLenum pname, GLint* param); + GLAPI void APIENTRY glGetTexBumpParameterfvATI(GLenum pname, GLfloat* param); +#endif +#endif /* GL_ATI_envmap_bumpmap */ + +#ifndef GL_ATI_fragment_shader +#define GL_ATI_fragment_shader 1 +#define GL_FRAGMENT_SHADER_ATI 0x8920 +#define GL_REG_0_ATI 0x8921 +#define GL_REG_1_ATI 0x8922 +#define GL_REG_2_ATI 0x8923 +#define GL_REG_3_ATI 0x8924 +#define GL_REG_4_ATI 0x8925 +#define GL_REG_5_ATI 0x8926 +#define GL_REG_6_ATI 0x8927 +#define GL_REG_7_ATI 0x8928 +#define GL_REG_8_ATI 0x8929 +#define GL_REG_9_ATI 0x892A +#define GL_REG_10_ATI 0x892B +#define GL_REG_11_ATI 0x892C +#define GL_REG_12_ATI 0x892D +#define GL_REG_13_ATI 0x892E +#define GL_REG_14_ATI 0x892F +#define GL_REG_15_ATI 0x8930 +#define GL_REG_16_ATI 0x8931 +#define GL_REG_17_ATI 0x8932 +#define GL_REG_18_ATI 0x8933 +#define GL_REG_19_ATI 0x8934 +#define GL_REG_20_ATI 0x8935 +#define GL_REG_21_ATI 0x8936 +#define GL_REG_22_ATI 0x8937 +#define GL_REG_23_ATI 0x8938 +#define GL_REG_24_ATI 0x8939 +#define GL_REG_25_ATI 0x893A +#define GL_REG_26_ATI 0x893B +#define GL_REG_27_ATI 0x893C +#define GL_REG_28_ATI 0x893D +#define GL_REG_29_ATI 0x893E +#define GL_REG_30_ATI 0x893F +#define GL_REG_31_ATI 0x8940 +#define GL_CON_0_ATI 0x8941 +#define GL_CON_1_ATI 0x8942 +#define GL_CON_2_ATI 0x8943 +#define GL_CON_3_ATI 0x8944 +#define GL_CON_4_ATI 0x8945 +#define GL_CON_5_ATI 0x8946 +#define GL_CON_6_ATI 0x8947 +#define GL_CON_7_ATI 0x8948 +#define GL_CON_8_ATI 0x8949 +#define GL_CON_9_ATI 0x894A +#define GL_CON_10_ATI 0x894B +#define GL_CON_11_ATI 0x894C +#define GL_CON_12_ATI 0x894D +#define GL_CON_13_ATI 0x894E +#define GL_CON_14_ATI 0x894F +#define GL_CON_15_ATI 0x8950 +#define GL_CON_16_ATI 0x8951 +#define GL_CON_17_ATI 0x8952 +#define GL_CON_18_ATI 0x8953 +#define GL_CON_19_ATI 0x8954 +#define GL_CON_20_ATI 0x8955 +#define GL_CON_21_ATI 0x8956 +#define GL_CON_22_ATI 0x8957 +#define GL_CON_23_ATI 0x8958 +#define GL_CON_24_ATI 0x8959 +#define GL_CON_25_ATI 0x895A +#define GL_CON_26_ATI 0x895B +#define GL_CON_27_ATI 0x895C +#define GL_CON_28_ATI 0x895D +#define GL_CON_29_ATI 0x895E +#define GL_CON_30_ATI 0x895F +#define GL_CON_31_ATI 0x8960 +#define GL_MOV_ATI 0x8961 +#define GL_ADD_ATI 0x8963 +#define GL_MUL_ATI 0x8964 +#define GL_SUB_ATI 0x8965 +#define GL_DOT3_ATI 0x8966 +#define GL_DOT4_ATI 0x8967 +#define GL_MAD_ATI 0x8968 +#define GL_LERP_ATI 0x8969 +#define GL_CND_ATI 0x896A +#define GL_CND0_ATI 0x896B +#define GL_DOT2_ADD_ATI 0x896C +#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D +#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E +#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F +#define GL_NUM_PASSES_ATI 0x8970 +#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 +#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 +#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 +#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 +#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 +#define GL_SWIZZLE_STR_ATI 0x8976 +#define GL_SWIZZLE_STQ_ATI 0x8977 +#define GL_SWIZZLE_STR_DR_ATI 0x8978 +#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 +#define GL_SWIZZLE_STRQ_ATI 0x897A +#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B +#define GL_RED_BIT_ATI 0x00000001 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_2X_BIT_ATI 0x00000001 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_HALF_BIT_ATI 0x00000008 +#define GL_QUARTER_BIT_ATI 0x00000010 +#define GL_EIGHTH_BIT_ATI 0x00000020 +#define GL_SATURATE_BIT_ATI 0x00000040 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_BIAS_BIT_ATI 0x00000008 + typedef GLuint(APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC)(GLuint range); + typedef void(APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC)(GLuint id); + typedef void(APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC)(GLuint id); + typedef void(APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC)(void); + typedef void(APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC)(void); + typedef void(APIENTRYP PFNGLPASSTEXCOORDATIPROC)(GLuint dst, GLuint coord, GLenum swizzle); + typedef void(APIENTRYP PFNGLSAMPLEMAPATIPROC)(GLuint dst, GLuint interp, GLenum swizzle); + typedef void(APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC)( + GLenum op, + GLuint dst, + GLuint dstMask, + GLuint dstMod, + GLuint arg1, + GLuint arg1Rep, + GLuint arg1Mod + ); + typedef void(APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC)( + GLenum op, + GLuint dst, + GLuint dstMask, + GLuint dstMod, + GLuint arg1, + GLuint arg1Rep, + GLuint arg1Mod, + GLuint arg2, + GLuint arg2Rep, + GLuint arg2Mod + ); + typedef void(APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC)( + GLenum op, + GLuint dst, + GLuint dstMask, + GLuint dstMod, + GLuint arg1, + GLuint arg1Rep, + GLuint arg1Mod, + GLuint arg2, + GLuint arg2Rep, + GLuint arg2Mod, + GLuint arg3, + GLuint arg3Rep, + GLuint arg3Mod + ); + typedef void(APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC)( + GLenum op, + GLuint dst, + GLuint dstMod, + GLuint arg1, + GLuint arg1Rep, + GLuint arg1Mod + ); + typedef void(APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC)( + GLenum op, + GLuint dst, + GLuint dstMod, + GLuint arg1, + GLuint arg1Rep, + GLuint arg1Mod, + GLuint arg2, + GLuint arg2Rep, + GLuint arg2Mod + ); + typedef void(APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC)( + GLenum op, + GLuint dst, + GLuint dstMod, + GLuint arg1, + GLuint arg1Rep, + GLuint arg1Mod, + GLuint arg2, + GLuint arg2Rep, + GLuint arg2Mod, + GLuint arg3, + GLuint arg3Rep, + GLuint arg3Mod + ); + typedef void(APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)(GLuint dst, const GLfloat* value); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLuint APIENTRY glGenFragmentShadersATI(GLuint range); + GLAPI void APIENTRY glBindFragmentShaderATI(GLuint id); + GLAPI void APIENTRY glDeleteFragmentShaderATI(GLuint id); + GLAPI void APIENTRY glBeginFragmentShaderATI(void); + GLAPI void APIENTRY glEndFragmentShaderATI(void); + GLAPI void APIENTRY glPassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle); + GLAPI void APIENTRY glSampleMapATI(GLuint dst, GLuint interp, GLenum swizzle); + GLAPI void APIENTRY glColorFragmentOp1ATI( + GLenum op, + GLuint dst, + GLuint dstMask, + GLuint dstMod, + GLuint arg1, + GLuint arg1Rep, + GLuint arg1Mod + ); + GLAPI void APIENTRY glColorFragmentOp2ATI( + GLenum op, + GLuint dst, + GLuint dstMask, + GLuint dstMod, + GLuint arg1, + GLuint arg1Rep, + GLuint arg1Mod, + GLuint arg2, + GLuint arg2Rep, + GLuint arg2Mod + ); + GLAPI void APIENTRY glColorFragmentOp3ATI( + GLenum op, + GLuint dst, + GLuint dstMask, + GLuint dstMod, + GLuint arg1, + GLuint arg1Rep, + GLuint arg1Mod, + GLuint arg2, + GLuint arg2Rep, + GLuint arg2Mod, + GLuint arg3, + GLuint arg3Rep, + GLuint arg3Mod + ); + GLAPI void APIENTRY + glAlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); + GLAPI void APIENTRY glAlphaFragmentOp2ATI( + GLenum op, + GLuint dst, + GLuint dstMod, + GLuint arg1, + GLuint arg1Rep, + GLuint arg1Mod, + GLuint arg2, + GLuint arg2Rep, + GLuint arg2Mod + ); + GLAPI void APIENTRY glAlphaFragmentOp3ATI( + GLenum op, + GLuint dst, + GLuint dstMod, + GLuint arg1, + GLuint arg1Rep, + GLuint arg1Mod, + GLuint arg2, + GLuint arg2Rep, + GLuint arg2Mod, + GLuint arg3, + GLuint arg3Rep, + GLuint arg3Mod + ); + GLAPI void APIENTRY glSetFragmentShaderConstantATI(GLuint dst, const GLfloat* value); +#endif +#endif /* GL_ATI_fragment_shader */ + +#ifndef GL_ATI_map_object_buffer +#define GL_ATI_map_object_buffer 1 + typedef void*(APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC)(GLuint buffer); + typedef void(APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC)(GLuint buffer); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void* APIENTRY glMapObjectBufferATI(GLuint buffer); + GLAPI void APIENTRY glUnmapObjectBufferATI(GLuint buffer); +#endif +#endif /* GL_ATI_map_object_buffer */ + +#ifndef GL_ATI_meminfo +#define GL_ATI_meminfo 1 +#define GL_VBO_FREE_MEMORY_ATI 0x87FB +#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC +#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD +#endif /* GL_ATI_meminfo */ + +#ifndef GL_ATI_pixel_format_float +#define GL_ATI_pixel_format_float 1 +#define GL_RGBA_FLOAT_MODE_ATI 0x8820 +#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 +#endif /* GL_ATI_pixel_format_float */ + +#ifndef GL_ATI_pn_triangles +#define GL_ATI_pn_triangles 1 +#define GL_PN_TRIANGLES_ATI 0x87F0 +#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 +#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 +#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 +#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 +#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 +#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 +#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 +#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 + typedef void(APIENTRYP PFNGLPNTRIANGLESIATIPROC)(GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLPNTRIANGLESFATIPROC)(GLenum pname, GLfloat param); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPNTrianglesiATI(GLenum pname, GLint param); + GLAPI void APIENTRY glPNTrianglesfATI(GLenum pname, GLfloat param); +#endif +#endif /* GL_ATI_pn_triangles */ + +#ifndef GL_ATI_separate_stencil +#define GL_ATI_separate_stencil 1 +#define GL_STENCIL_BACK_FUNC_ATI 0x8800 +#define GL_STENCIL_BACK_FAIL_ATI 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 + typedef void(APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + typedef void(APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glStencilOpSeparateATI(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); + GLAPI void APIENTRY glStencilFuncSeparateATI(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +#endif +#endif /* GL_ATI_separate_stencil */ + +#ifndef GL_ATI_text_fragment_shader +#define GL_ATI_text_fragment_shader 1 +#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 +#endif /* GL_ATI_text_fragment_shader */ + +#ifndef GL_ATI_texture_env_combine3 +#define GL_ATI_texture_env_combine3 1 +#define GL_MODULATE_ADD_ATI 0x8744 +#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 +#define GL_MODULATE_SUBTRACT_ATI 0x8746 +#endif /* GL_ATI_texture_env_combine3 */ + +#ifndef GL_ATI_texture_float +#define GL_ATI_texture_float 1 +#define GL_RGBA_FLOAT32_ATI 0x8814 +#define GL_RGB_FLOAT32_ATI 0x8815 +#define GL_ALPHA_FLOAT32_ATI 0x8816 +#define GL_INTENSITY_FLOAT32_ATI 0x8817 +#define GL_LUMINANCE_FLOAT32_ATI 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 +#define GL_RGBA_FLOAT16_ATI 0x881A +#define GL_RGB_FLOAT16_ATI 0x881B +#define GL_ALPHA_FLOAT16_ATI 0x881C +#define GL_INTENSITY_FLOAT16_ATI 0x881D +#define GL_LUMINANCE_FLOAT16_ATI 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F +#endif /* GL_ATI_texture_float */ + +#ifndef GL_ATI_texture_mirror_once +#define GL_ATI_texture_mirror_once 1 +#define GL_MIRROR_CLAMP_ATI 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 +#endif /* GL_ATI_texture_mirror_once */ + +#ifndef GL_ATI_vertex_array_object +#define GL_ATI_vertex_array_object 1 +#define GL_STATIC_ATI 0x8760 +#define GL_DYNAMIC_ATI 0x8761 +#define GL_PRESERVE_ATI 0x8762 +#define GL_DISCARD_ATI 0x8763 +#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 +#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 +#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 +#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 + typedef GLuint(APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC)(GLsizei size, const void* pointer, GLenum usage); + typedef GLboolean(APIENTRYP PFNGLISOBJECTBUFFERATIPROC)(GLuint buffer); + typedef void(APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC)( + GLuint buffer, + GLuint offset, + GLsizei size, + const void* pointer, + GLenum preserve + ); + typedef void(APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC)(GLuint buffer, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC)(GLuint buffer, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC)(GLuint buffer); + typedef void(APIENTRYP PFNGLARRAYOBJECTATIPROC)( + GLenum array, + GLint size, + GLenum type, + GLsizei stride, + GLuint buffer, + GLuint offset + ); + typedef void(APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC)(GLenum array, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC)(GLenum array, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC)( + GLuint id, + GLenum type, + GLsizei stride, + GLuint buffer, + GLuint offset + ); + typedef void(APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC)(GLuint id, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC)(GLuint id, GLenum pname, GLint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLuint APIENTRY glNewObjectBufferATI(GLsizei size, const void* pointer, GLenum usage); + GLAPI GLboolean APIENTRY glIsObjectBufferATI(GLuint buffer); + GLAPI void APIENTRY + glUpdateObjectBufferATI(GLuint buffer, GLuint offset, GLsizei size, const void* pointer, GLenum preserve); + GLAPI void APIENTRY glGetObjectBufferfvATI(GLuint buffer, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetObjectBufferivATI(GLuint buffer, GLenum pname, GLint* params); + GLAPI void APIENTRY glFreeObjectBufferATI(GLuint buffer); + GLAPI void APIENTRY + glArrayObjectATI(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); + GLAPI void APIENTRY glGetArrayObjectfvATI(GLenum array, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetArrayObjectivATI(GLenum array, GLenum pname, GLint* params); + GLAPI void APIENTRY glVariantArrayObjectATI(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); + GLAPI void APIENTRY glGetVariantArrayObjectfvATI(GLuint id, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetVariantArrayObjectivATI(GLuint id, GLenum pname, GLint* params); +#endif +#endif /* GL_ATI_vertex_array_object */ + +#ifndef GL_ATI_vertex_attrib_array_object +#define GL_ATI_vertex_attrib_array_object 1 + typedef void(APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)( + GLuint index, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + GLuint buffer, + GLuint offset + ); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)(GLuint index, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)(GLuint index, GLenum pname, GLint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glVertexAttribArrayObjectATI( + GLuint index, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + GLuint buffer, + GLuint offset + ); + GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI(GLuint index, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI(GLuint index, GLenum pname, GLint* params); +#endif +#endif /* GL_ATI_vertex_attrib_array_object */ + +#ifndef GL_ATI_vertex_streams +#define GL_ATI_vertex_streams 1 +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_VERTEX_STREAM0_ATI 0x876C +#define GL_VERTEX_STREAM1_ATI 0x876D +#define GL_VERTEX_STREAM2_ATI 0x876E +#define GL_VERTEX_STREAM3_ATI 0x876F +#define GL_VERTEX_STREAM4_ATI 0x8770 +#define GL_VERTEX_STREAM5_ATI 0x8771 +#define GL_VERTEX_STREAM6_ATI 0x8772 +#define GL_VERTEX_STREAM7_ATI 0x8773 +#define GL_VERTEX_SOURCE_ATI 0x8774 + typedef void(APIENTRYP PFNGLVERTEXSTREAM1SATIPROC)(GLenum stream, GLshort x); + typedef void(APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC)(GLenum stream, const GLshort* coords); + typedef void(APIENTRYP PFNGLVERTEXSTREAM1IATIPROC)(GLenum stream, GLint x); + typedef void(APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC)(GLenum stream, const GLint* coords); + typedef void(APIENTRYP PFNGLVERTEXSTREAM1FATIPROC)(GLenum stream, GLfloat x); + typedef void(APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC)(GLenum stream, const GLfloat* coords); + typedef void(APIENTRYP PFNGLVERTEXSTREAM1DATIPROC)(GLenum stream, GLdouble x); + typedef void(APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC)(GLenum stream, const GLdouble* coords); + typedef void(APIENTRYP PFNGLVERTEXSTREAM2SATIPROC)(GLenum stream, GLshort x, GLshort y); + typedef void(APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC)(GLenum stream, const GLshort* coords); + typedef void(APIENTRYP PFNGLVERTEXSTREAM2IATIPROC)(GLenum stream, GLint x, GLint y); + typedef void(APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC)(GLenum stream, const GLint* coords); + typedef void(APIENTRYP PFNGLVERTEXSTREAM2FATIPROC)(GLenum stream, GLfloat x, GLfloat y); + typedef void(APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC)(GLenum stream, const GLfloat* coords); + typedef void(APIENTRYP PFNGLVERTEXSTREAM2DATIPROC)(GLenum stream, GLdouble x, GLdouble y); + typedef void(APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC)(GLenum stream, const GLdouble* coords); + typedef void(APIENTRYP PFNGLVERTEXSTREAM3SATIPROC)(GLenum stream, GLshort x, GLshort y, GLshort z); + typedef void(APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC)(GLenum stream, const GLshort* coords); + typedef void(APIENTRYP PFNGLVERTEXSTREAM3IATIPROC)(GLenum stream, GLint x, GLint y, GLint z); + typedef void(APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC)(GLenum stream, const GLint* coords); + typedef void(APIENTRYP PFNGLVERTEXSTREAM3FATIPROC)(GLenum stream, GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC)(GLenum stream, const GLfloat* coords); + typedef void(APIENTRYP PFNGLVERTEXSTREAM3DATIPROC)(GLenum stream, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC)(GLenum stream, const GLdouble* coords); + typedef void(APIENTRYP PFNGLVERTEXSTREAM4SATIPROC)(GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); + typedef void(APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC)(GLenum stream, const GLshort* coords); + typedef void(APIENTRYP PFNGLVERTEXSTREAM4IATIPROC)(GLenum stream, GLint x, GLint y, GLint z, GLint w); + typedef void(APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC)(GLenum stream, const GLint* coords); + typedef void(APIENTRYP PFNGLVERTEXSTREAM4FATIPROC)(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + typedef void(APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC)(GLenum stream, const GLfloat* coords); + typedef void(APIENTRYP PFNGLVERTEXSTREAM4DATIPROC)(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + typedef void(APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC)(GLenum stream, const GLdouble* coords); + typedef void(APIENTRYP PFNGLNORMALSTREAM3BATIPROC)(GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); + typedef void(APIENTRYP PFNGLNORMALSTREAM3BVATIPROC)(GLenum stream, const GLbyte* coords); + typedef void(APIENTRYP PFNGLNORMALSTREAM3SATIPROC)(GLenum stream, GLshort nx, GLshort ny, GLshort nz); + typedef void(APIENTRYP PFNGLNORMALSTREAM3SVATIPROC)(GLenum stream, const GLshort* coords); + typedef void(APIENTRYP PFNGLNORMALSTREAM3IATIPROC)(GLenum stream, GLint nx, GLint ny, GLint nz); + typedef void(APIENTRYP PFNGLNORMALSTREAM3IVATIPROC)(GLenum stream, const GLint* coords); + typedef void(APIENTRYP PFNGLNORMALSTREAM3FATIPROC)(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); + typedef void(APIENTRYP PFNGLNORMALSTREAM3FVATIPROC)(GLenum stream, const GLfloat* coords); + typedef void(APIENTRYP PFNGLNORMALSTREAM3DATIPROC)(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); + typedef void(APIENTRYP PFNGLNORMALSTREAM3DVATIPROC)(GLenum stream, const GLdouble* coords); + typedef void(APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)(GLenum stream); + typedef void(APIENTRYP PFNGLVERTEXBLENDENVIATIPROC)(GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLVERTEXBLENDENVFATIPROC)(GLenum pname, GLfloat param); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glVertexStream1sATI(GLenum stream, GLshort x); + GLAPI void APIENTRY glVertexStream1svATI(GLenum stream, const GLshort* coords); + GLAPI void APIENTRY glVertexStream1iATI(GLenum stream, GLint x); + GLAPI void APIENTRY glVertexStream1ivATI(GLenum stream, const GLint* coords); + GLAPI void APIENTRY glVertexStream1fATI(GLenum stream, GLfloat x); + GLAPI void APIENTRY glVertexStream1fvATI(GLenum stream, const GLfloat* coords); + GLAPI void APIENTRY glVertexStream1dATI(GLenum stream, GLdouble x); + GLAPI void APIENTRY glVertexStream1dvATI(GLenum stream, const GLdouble* coords); + GLAPI void APIENTRY glVertexStream2sATI(GLenum stream, GLshort x, GLshort y); + GLAPI void APIENTRY glVertexStream2svATI(GLenum stream, const GLshort* coords); + GLAPI void APIENTRY glVertexStream2iATI(GLenum stream, GLint x, GLint y); + GLAPI void APIENTRY glVertexStream2ivATI(GLenum stream, const GLint* coords); + GLAPI void APIENTRY glVertexStream2fATI(GLenum stream, GLfloat x, GLfloat y); + GLAPI void APIENTRY glVertexStream2fvATI(GLenum stream, const GLfloat* coords); + GLAPI void APIENTRY glVertexStream2dATI(GLenum stream, GLdouble x, GLdouble y); + GLAPI void APIENTRY glVertexStream2dvATI(GLenum stream, const GLdouble* coords); + GLAPI void APIENTRY glVertexStream3sATI(GLenum stream, GLshort x, GLshort y, GLshort z); + GLAPI void APIENTRY glVertexStream3svATI(GLenum stream, const GLshort* coords); + GLAPI void APIENTRY glVertexStream3iATI(GLenum stream, GLint x, GLint y, GLint z); + GLAPI void APIENTRY glVertexStream3ivATI(GLenum stream, const GLint* coords); + GLAPI void APIENTRY glVertexStream3fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glVertexStream3fvATI(GLenum stream, const GLfloat* coords); + GLAPI void APIENTRY glVertexStream3dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glVertexStream3dvATI(GLenum stream, const GLdouble* coords); + GLAPI void APIENTRY glVertexStream4sATI(GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); + GLAPI void APIENTRY glVertexStream4svATI(GLenum stream, const GLshort* coords); + GLAPI void APIENTRY glVertexStream4iATI(GLenum stream, GLint x, GLint y, GLint z, GLint w); + GLAPI void APIENTRY glVertexStream4ivATI(GLenum stream, const GLint* coords); + GLAPI void APIENTRY glVertexStream4fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + GLAPI void APIENTRY glVertexStream4fvATI(GLenum stream, const GLfloat* coords); + GLAPI void APIENTRY glVertexStream4dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glVertexStream4dvATI(GLenum stream, const GLdouble* coords); + GLAPI void APIENTRY glNormalStream3bATI(GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); + GLAPI void APIENTRY glNormalStream3bvATI(GLenum stream, const GLbyte* coords); + GLAPI void APIENTRY glNormalStream3sATI(GLenum stream, GLshort nx, GLshort ny, GLshort nz); + GLAPI void APIENTRY glNormalStream3svATI(GLenum stream, const GLshort* coords); + GLAPI void APIENTRY glNormalStream3iATI(GLenum stream, GLint nx, GLint ny, GLint nz); + GLAPI void APIENTRY glNormalStream3ivATI(GLenum stream, const GLint* coords); + GLAPI void APIENTRY glNormalStream3fATI(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); + GLAPI void APIENTRY glNormalStream3fvATI(GLenum stream, const GLfloat* coords); + GLAPI void APIENTRY glNormalStream3dATI(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); + GLAPI void APIENTRY glNormalStream3dvATI(GLenum stream, const GLdouble* coords); + GLAPI void APIENTRY glClientActiveVertexStreamATI(GLenum stream); + GLAPI void APIENTRY glVertexBlendEnviATI(GLenum pname, GLint param); + GLAPI void APIENTRY glVertexBlendEnvfATI(GLenum pname, GLfloat param); +#endif +#endif /* GL_ATI_vertex_streams */ + +#ifndef GL_EXT_422_pixels +#define GL_EXT_422_pixels 1 +#define GL_422_EXT 0x80CC +#define GL_422_REV_EXT 0x80CD +#define GL_422_AVERAGE_EXT 0x80CE +#define GL_422_REV_AVERAGE_EXT 0x80CF +#endif /* GL_EXT_422_pixels */ + +#ifndef GL_EXT_EGL_image_storage +#define GL_EXT_EGL_image_storage 1 + typedef void* GLeglImageOES; + typedef void(APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC)( + GLenum target, + GLeglImageOES image, + const GLint* attrib_list + ); + typedef void(APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC)( + GLuint texture, + GLeglImageOES image, + const GLint* attrib_list + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glEGLImageTargetTexStorageEXT(GLenum target, GLeglImageOES image, const GLint* attrib_list); + GLAPI void APIENTRY + glEGLImageTargetTextureStorageEXT(GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#endif +#endif /* GL_EXT_EGL_image_storage */ + +#ifndef GL_EXT_EGL_sync +#define GL_EXT_EGL_sync 1 +#endif /* GL_EXT_EGL_sync */ + +#ifndef GL_EXT_abgr +#define GL_EXT_abgr 1 +#define GL_ABGR_EXT 0x8000 +#endif /* GL_EXT_abgr */ + +#ifndef GL_EXT_bgra +#define GL_EXT_bgra 1 +#define GL_BGR_EXT 0x80E0 +#define GL_BGRA_EXT 0x80E1 +#endif /* GL_EXT_bgra */ + +#ifndef GL_EXT_bindable_uniform +#define GL_EXT_bindable_uniform 1 +#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 +#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 +#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 +#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED +#define GL_UNIFORM_BUFFER_EXT 0x8DEE +#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF + typedef void(APIENTRYP PFNGLUNIFORMBUFFEREXTPROC)(GLuint program, GLint location, GLuint buffer); + typedef GLint(APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC)(GLuint program, GLint location); + typedef GLintptr(APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC)(GLuint program, GLint location); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glUniformBufferEXT(GLuint program, GLint location, GLuint buffer); + GLAPI GLint APIENTRY glGetUniformBufferSizeEXT(GLuint program, GLint location); + GLAPI GLintptr APIENTRY glGetUniformOffsetEXT(GLuint program, GLint location); +#endif +#endif /* GL_EXT_bindable_uniform */ + +#ifndef GL_EXT_blend_color +#define GL_EXT_blend_color 1 +#define GL_CONSTANT_COLOR_EXT 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 +#define GL_CONSTANT_ALPHA_EXT 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 +#define GL_BLEND_COLOR_EXT 0x8005 + typedef void(APIENTRYP PFNGLBLENDCOLOREXTPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBlendColorEXT(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +#endif +#endif /* GL_EXT_blend_color */ + +#ifndef GL_EXT_blend_equation_separate +#define GL_EXT_blend_equation_separate 1 +#define GL_BLEND_EQUATION_RGB_EXT 0x8009 +#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D + typedef void(APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC)(GLenum modeRGB, GLenum modeAlpha); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBlendEquationSeparateEXT(GLenum modeRGB, GLenum modeAlpha); +#endif +#endif /* GL_EXT_blend_equation_separate */ + +#ifndef GL_EXT_blend_func_separate +#define GL_EXT_blend_func_separate 1 +#define GL_BLEND_DST_RGB_EXT 0x80C8 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 +#define GL_BLEND_DST_ALPHA_EXT 0x80CA +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB + typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC)( + GLenum sfactorRGB, + GLenum dfactorRGB, + GLenum sfactorAlpha, + GLenum dfactorAlpha + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glBlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#endif +#endif /* GL_EXT_blend_func_separate */ + +#ifndef GL_EXT_blend_logic_op +#define GL_EXT_blend_logic_op 1 +#endif /* GL_EXT_blend_logic_op */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_BLEND_EQUATION_EXT 0x8009 + typedef void(APIENTRYP PFNGLBLENDEQUATIONEXTPROC)(GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBlendEquationEXT(GLenum mode); +#endif +#endif /* GL_EXT_blend_minmax */ + +#ifndef GL_EXT_blend_subtract +#define GL_EXT_blend_subtract 1 +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B +#endif /* GL_EXT_blend_subtract */ + +#ifndef GL_EXT_clip_volume_hint +#define GL_EXT_clip_volume_hint 1 +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 +#endif /* GL_EXT_clip_volume_hint */ + +#ifndef GL_EXT_cmyka +#define GL_EXT_cmyka 1 +#define GL_CMYK_EXT 0x800C +#define GL_CMYKA_EXT 0x800D +#define GL_PACK_CMYK_HINT_EXT 0x800E +#define GL_UNPACK_CMYK_HINT_EXT 0x800F +#endif /* GL_EXT_cmyka */ + +#ifndef GL_EXT_color_subtable +#define GL_EXT_color_subtable 1 + typedef void(APIENTRYP PFNGLCOLORSUBTABLEEXTPROC)( + GLenum target, + GLsizei start, + GLsizei count, + GLenum format, + GLenum type, + const void* data + ); + typedef void(APIENTRYP + PFNGLCOPYCOLORSUBTABLEEXTPROC)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glColorSubTableEXT(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void* data); + GLAPI void APIENTRY glCopyColorSubTableEXT(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +#endif +#endif /* GL_EXT_color_subtable */ + +#ifndef GL_EXT_compiled_vertex_array +#define GL_EXT_compiled_vertex_array 1 +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 + typedef void(APIENTRYP PFNGLLOCKARRAYSEXTPROC)(GLint first, GLsizei count); + typedef void(APIENTRYP PFNGLUNLOCKARRAYSEXTPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glLockArraysEXT(GLint first, GLsizei count); + GLAPI void APIENTRY glUnlockArraysEXT(void); +#endif +#endif /* GL_EXT_compiled_vertex_array */ + +#ifndef GL_EXT_convolution +#define GL_EXT_convolution 1 +#define GL_CONVOLUTION_1D_EXT 0x8010 +#define GL_CONVOLUTION_2D_EXT 0x8011 +#define GL_SEPARABLE_2D_EXT 0x8012 +#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 +#define GL_REDUCE_EXT 0x8016 +#define GL_CONVOLUTION_FORMAT_EXT 0x8017 +#define GL_CONVOLUTION_WIDTH_EXT 0x8018 +#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 + typedef void(APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC)( + GLenum target, + GLenum internalformat, + GLsizei width, + GLenum format, + GLenum type, + const void* image + ); + typedef void(APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC)( + GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* image + ); + typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC)(GLenum target, GLenum pname, GLfloat params); + typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC)(GLenum target, GLenum pname, GLint params); + typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)( + GLenum target, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width + ); + typedef void(APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)( + GLenum target, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC)(GLenum target, GLenum format, GLenum type, void* image); + typedef void(APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC)( + GLenum target, + GLenum format, + GLenum type, + void* row, + void* column, + void* span + ); + typedef void(APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC)( + GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* row, + const void* column + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glConvolutionFilter1DEXT( + GLenum target, + GLenum internalformat, + GLsizei width, + GLenum format, + GLenum type, + const void* image + ); + GLAPI void APIENTRY glConvolutionFilter2DEXT( + GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* image + ); + GLAPI void APIENTRY glConvolutionParameterfEXT(GLenum target, GLenum pname, GLfloat params); + GLAPI void APIENTRY glConvolutionParameterfvEXT(GLenum target, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glConvolutionParameteriEXT(GLenum target, GLenum pname, GLint params); + GLAPI void APIENTRY glConvolutionParameterivEXT(GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY + glCopyConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + GLAPI void APIENTRY + glCopyConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); + GLAPI void APIENTRY glGetConvolutionFilterEXT(GLenum target, GLenum format, GLenum type, void* image); + GLAPI void APIENTRY glGetConvolutionParameterfvEXT(GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetConvolutionParameterivEXT(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY + glGetSeparableFilterEXT(GLenum target, GLenum format, GLenum type, void* row, void* column, void* span); + GLAPI void APIENTRY glSeparableFilter2DEXT( + GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* row, + const void* column + ); +#endif +#endif /* GL_EXT_convolution */ + +#ifndef GL_EXT_coordinate_frame +#define GL_EXT_coordinate_frame 1 +#define GL_TANGENT_ARRAY_EXT 0x8439 +#define GL_BINORMAL_ARRAY_EXT 0x843A +#define GL_CURRENT_TANGENT_EXT 0x843B +#define GL_CURRENT_BINORMAL_EXT 0x843C +#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E +#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F +#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 +#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 +#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 +#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 +#define GL_MAP1_TANGENT_EXT 0x8444 +#define GL_MAP2_TANGENT_EXT 0x8445 +#define GL_MAP1_BINORMAL_EXT 0x8446 +#define GL_MAP2_BINORMAL_EXT 0x8447 + typedef void(APIENTRYP PFNGLTANGENT3BEXTPROC)(GLbyte tx, GLbyte ty, GLbyte tz); + typedef void(APIENTRYP PFNGLTANGENT3BVEXTPROC)(const GLbyte* v); + typedef void(APIENTRYP PFNGLTANGENT3DEXTPROC)(GLdouble tx, GLdouble ty, GLdouble tz); + typedef void(APIENTRYP PFNGLTANGENT3DVEXTPROC)(const GLdouble* v); + typedef void(APIENTRYP PFNGLTANGENT3FEXTPROC)(GLfloat tx, GLfloat ty, GLfloat tz); + typedef void(APIENTRYP PFNGLTANGENT3FVEXTPROC)(const GLfloat* v); + typedef void(APIENTRYP PFNGLTANGENT3IEXTPROC)(GLint tx, GLint ty, GLint tz); + typedef void(APIENTRYP PFNGLTANGENT3IVEXTPROC)(const GLint* v); + typedef void(APIENTRYP PFNGLTANGENT3SEXTPROC)(GLshort tx, GLshort ty, GLshort tz); + typedef void(APIENTRYP PFNGLTANGENT3SVEXTPROC)(const GLshort* v); + typedef void(APIENTRYP PFNGLBINORMAL3BEXTPROC)(GLbyte bx, GLbyte by, GLbyte bz); + typedef void(APIENTRYP PFNGLBINORMAL3BVEXTPROC)(const GLbyte* v); + typedef void(APIENTRYP PFNGLBINORMAL3DEXTPROC)(GLdouble bx, GLdouble by, GLdouble bz); + typedef void(APIENTRYP PFNGLBINORMAL3DVEXTPROC)(const GLdouble* v); + typedef void(APIENTRYP PFNGLBINORMAL3FEXTPROC)(GLfloat bx, GLfloat by, GLfloat bz); + typedef void(APIENTRYP PFNGLBINORMAL3FVEXTPROC)(const GLfloat* v); + typedef void(APIENTRYP PFNGLBINORMAL3IEXTPROC)(GLint bx, GLint by, GLint bz); + typedef void(APIENTRYP PFNGLBINORMAL3IVEXTPROC)(const GLint* v); + typedef void(APIENTRYP PFNGLBINORMAL3SEXTPROC)(GLshort bx, GLshort by, GLshort bz); + typedef void(APIENTRYP PFNGLBINORMAL3SVEXTPROC)(const GLshort* v); + typedef void(APIENTRYP PFNGLTANGENTPOINTEREXTPROC)(GLenum type, GLsizei stride, const void* pointer); + typedef void(APIENTRYP PFNGLBINORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, const void* pointer); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTangent3bEXT(GLbyte tx, GLbyte ty, GLbyte tz); + GLAPI void APIENTRY glTangent3bvEXT(const GLbyte* v); + GLAPI void APIENTRY glTangent3dEXT(GLdouble tx, GLdouble ty, GLdouble tz); + GLAPI void APIENTRY glTangent3dvEXT(const GLdouble* v); + GLAPI void APIENTRY glTangent3fEXT(GLfloat tx, GLfloat ty, GLfloat tz); + GLAPI void APIENTRY glTangent3fvEXT(const GLfloat* v); + GLAPI void APIENTRY glTangent3iEXT(GLint tx, GLint ty, GLint tz); + GLAPI void APIENTRY glTangent3ivEXT(const GLint* v); + GLAPI void APIENTRY glTangent3sEXT(GLshort tx, GLshort ty, GLshort tz); + GLAPI void APIENTRY glTangent3svEXT(const GLshort* v); + GLAPI void APIENTRY glBinormal3bEXT(GLbyte bx, GLbyte by, GLbyte bz); + GLAPI void APIENTRY glBinormal3bvEXT(const GLbyte* v); + GLAPI void APIENTRY glBinormal3dEXT(GLdouble bx, GLdouble by, GLdouble bz); + GLAPI void APIENTRY glBinormal3dvEXT(const GLdouble* v); + GLAPI void APIENTRY glBinormal3fEXT(GLfloat bx, GLfloat by, GLfloat bz); + GLAPI void APIENTRY glBinormal3fvEXT(const GLfloat* v); + GLAPI void APIENTRY glBinormal3iEXT(GLint bx, GLint by, GLint bz); + GLAPI void APIENTRY glBinormal3ivEXT(const GLint* v); + GLAPI void APIENTRY glBinormal3sEXT(GLshort bx, GLshort by, GLshort bz); + GLAPI void APIENTRY glBinormal3svEXT(const GLshort* v); + GLAPI void APIENTRY glTangentPointerEXT(GLenum type, GLsizei stride, const void* pointer); + GLAPI void APIENTRY glBinormalPointerEXT(GLenum type, GLsizei stride, const void* pointer); +#endif +#endif /* GL_EXT_coordinate_frame */ + +#ifndef GL_EXT_copy_texture +#define GL_EXT_copy_texture 1 + typedef void(APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLint border + ); + typedef void(APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border + ); + typedef void(APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint x, + GLint y, + GLsizei width + ); + typedef void(APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glCopyTexImage1DEXT( + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLint border + ); + GLAPI void APIENTRY glCopyTexImage2DEXT( + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border + ); + GLAPI void APIENTRY + glCopyTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); + GLAPI void APIENTRY glCopyTexSubImage2DEXT( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glCopyTexSubImage3DEXT( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); +#endif +#endif /* GL_EXT_copy_texture */ + +#ifndef GL_EXT_cull_vertex +#define GL_EXT_cull_vertex 1 +#define GL_CULL_VERTEX_EXT 0x81AA +#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB +#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC + typedef void(APIENTRYP PFNGLCULLPARAMETERDVEXTPROC)(GLenum pname, GLdouble* params); + typedef void(APIENTRYP PFNGLCULLPARAMETERFVEXTPROC)(GLenum pname, GLfloat* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glCullParameterdvEXT(GLenum pname, GLdouble* params); + GLAPI void APIENTRY glCullParameterfvEXT(GLenum pname, GLfloat* params); +#endif +#endif /* GL_EXT_cull_vertex */ + +#ifndef GL_EXT_debug_label +#define GL_EXT_debug_label 1 +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 + typedef void(APIENTRYP PFNGLLABELOBJECTEXTPROC)(GLenum type, GLuint object, GLsizei length, const GLchar* label); + typedef void(APIENTRYP PFNGLGETOBJECTLABELEXTPROC)( + GLenum type, + GLuint object, + GLsizei bufSize, + GLsizei* length, + GLchar* label + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar* label); + GLAPI void APIENTRY + glGetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei* length, GLchar* label); +#endif +#endif /* GL_EXT_debug_label */ + +#ifndef GL_EXT_debug_marker +#define GL_EXT_debug_marker 1 + typedef void(APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC)(GLsizei length, const GLchar* marker); + typedef void(APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC)(GLsizei length, const GLchar* marker); + typedef void(APIENTRYP PFNGLPOPGROUPMARKEREXTPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glInsertEventMarkerEXT(GLsizei length, const GLchar* marker); + GLAPI void APIENTRY glPushGroupMarkerEXT(GLsizei length, const GLchar* marker); + GLAPI void APIENTRY glPopGroupMarkerEXT(void); +#endif +#endif /* GL_EXT_debug_marker */ + +#ifndef GL_EXT_depth_bounds_test +#define GL_EXT_depth_bounds_test 1 +#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 +#define GL_DEPTH_BOUNDS_EXT 0x8891 + typedef void(APIENTRYP PFNGLDEPTHBOUNDSEXTPROC)(GLclampd zmin, GLclampd zmax); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDepthBoundsEXT(GLclampd zmin, GLclampd zmax); +#endif +#endif /* GL_EXT_depth_bounds_test */ + +#ifndef GL_EXT_direct_state_access +#define GL_EXT_direct_state_access 1 +#define GL_PROGRAM_MATRIX_EXT 0x8E2D +#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E +#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F + typedef void(APIENTRYP PFNGLMATRIXLOADFEXTPROC)(GLenum mode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXLOADDEXTPROC)(GLenum mode, const GLdouble* m); + typedef void(APIENTRYP PFNGLMATRIXMULTFEXTPROC)(GLenum mode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXMULTDEXTPROC)(GLenum mode, const GLdouble* m); + typedef void(APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC)(GLenum mode); + typedef void(APIENTRYP PFNGLMATRIXROTATEFEXTPROC)(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLMATRIXROTATEDEXTPROC)(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLMATRIXSCALEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLMATRIXSCALEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC)( + GLenum mode, + GLdouble left, + GLdouble right, + GLdouble bottom, + GLdouble top, + GLdouble zNear, + GLdouble zFar + ); + typedef void(APIENTRYP PFNGLMATRIXORTHOEXTPROC)( + GLenum mode, + GLdouble left, + GLdouble right, + GLdouble bottom, + GLdouble top, + GLdouble zNear, + GLdouble zFar + ); + typedef void(APIENTRYP PFNGLMATRIXPOPEXTPROC)(GLenum mode); + typedef void(APIENTRYP PFNGLMATRIXPUSHEXTPROC)(GLenum mode); + typedef void(APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); + typedef void(APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC)( + GLuint texture, + GLenum target, + GLenum pname, + const GLfloat* params + ); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLint param); + typedef void(APIENTRYP + PFNGLTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLint border + ); + typedef void(APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border + ); + typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint x, + GLint y, + GLsizei width + ); + typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum format, + GLenum type, + void* pixels + ); + typedef void(APIENTRYP + PFNGLGETTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP + PFNGLGETTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum pname, + GLfloat* params + ); + typedef void(APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC)(GLenum texunit, GLenum target, GLuint texture); + typedef void(APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC)( + GLenum texunit, + GLint size, + GLenum type, + GLsizei stride, + const void* pointer + ); + typedef void(APIENTRYP PFNGLMULTITEXENVFEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat param); + typedef void(APIENTRYP + PFNGLMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLMULTITEXENVIEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLMULTITEXGENDEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLdouble param); + typedef void(APIENTRYP + PFNGLMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params); + typedef void(APIENTRYP PFNGLMULTITEXGENFEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLfloat param); + typedef void(APIENTRYP + PFNGLMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLMULTITEXGENIEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLdouble* params); + typedef void(APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint param); + typedef void(APIENTRYP + PFNGLMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC)( + GLenum texunit, + GLenum target, + GLenum pname, + const GLfloat* params + ); + typedef void(APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLint border + ); + typedef void(APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border + ); + typedef void(APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint x, + GLint y, + GLsizei width + ); + typedef void(APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum format, + GLenum type, + void* pixels + ); + typedef void(APIENTRYP + PFNGLGETMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP + PFNGLGETMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum pname, + GLfloat* params + ); + typedef void(APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); + typedef void(APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); + typedef void(APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC)(GLenum target, GLuint index, GLfloat* data); + typedef void(APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC)(GLenum target, GLuint index, GLdouble* data); + typedef void(APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC)(GLenum target, GLuint index, void** data); + typedef void(APIENTRYP PFNGLENABLEINDEXEDEXTPROC)(GLenum target, GLuint index); + typedef void(APIENTRYP PFNGLDISABLEINDEXEDEXTPROC)(GLenum target, GLuint index); + typedef GLboolean(APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC)(GLenum target, GLuint index); + typedef void(APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC)(GLenum target, GLuint index, GLint* data); + typedef void(APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC)(GLenum target, GLuint index, GLboolean* data); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, GLint lod, void* img); + typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* bits + ); + typedef void(APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, GLint lod, void* img); + typedef void(APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble* m); + typedef void(APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble* m); + typedef void(APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLsizeiptr size, const void* data, GLenum usage); + typedef void(APIENTRYP + PFNGLNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); + typedef void*(APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC)(GLuint buffer, GLenum access); + typedef GLboolean(APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC)(GLuint buffer); + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)(GLuint buffer, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)(GLuint buffer, GLenum pname, void** params); + typedef void(APIENTRYP + PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr size, void* data); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC)(GLuint program, GLint location, GLfloat v0); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3FEXTPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC)( + GLuint program, + GLint location, + GLfloat v0, + GLfloat v1, + GLfloat v2, + GLfloat v3 + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC)(GLuint program, GLint location, GLint v0); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC)(GLuint program, GLint location, GLint v0, GLint v1); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC)( + GLuint program, + GLint location, + GLint v0, + GLint v1, + GLint v2, + GLint v3 + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLfloat* value + ); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM1IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM2IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM4IVEXTPROC)(GLuint program, GLint location, GLsizei count, const GLint* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + typedef void(APIENTRYP + PFNGLTEXTUREBUFFEREXTPROC)(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); + typedef void(APIENTRYP + PFNGLMULTITEXBUFFEREXTPROC)(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); + typedef void(APIENTRYP + PFNGLTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC)( + GLuint texture, + GLenum target, + GLenum pname, + const GLuint* params + ); + typedef void(APIENTRYP + PFNGLGETTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP + PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, GLuint* params); + typedef void(APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC)( + GLenum texunit, + GLenum target, + GLenum pname, + const GLint* params + ); + typedef void(APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC)( + GLenum texunit, + GLenum target, + GLenum pname, + const GLuint* params + ); + typedef void(APIENTRYP + PFNGLGETMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP + PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, GLuint* params); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC)(GLuint program, GLint location, GLuint v0); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC)(GLuint program, GLint location, GLuint v0, GLuint v1); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3UIEXTPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC)( + GLuint program, + GLint location, + GLuint v0, + GLuint v1, + GLuint v2, + GLuint v3 + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint* value + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLsizei count, + const GLfloat* params + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLint x, + GLint y, + GLint z, + GLint w + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + const GLint* params + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLsizei count, + const GLint* params + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLuint x, + GLuint y, + GLuint z, + GLuint w + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + const GLuint* params + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLsizei count, + const GLuint* params + ); + typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLint* params + ); + typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLuint* params + ); + typedef void(APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index); + typedef void(APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index); + 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 PFNGLNAMEDPROGRAMSTRINGEXTPROC)( + GLuint program, + GLenum target, + GLenum format, + GLsizei len, + const void* string + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLdouble x, + GLdouble y, + GLdouble z, + GLdouble w + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + const GLdouble* params + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w + ); + typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + const GLfloat* params + ); + typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLdouble* params + ); + typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)( + GLuint program, + GLenum target, + GLuint index, + GLfloat* params + ); + typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC)(GLuint program, GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP + PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, GLenum pname, void* string); + typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)( + GLuint renderbuffer, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP + PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)(GLuint renderbuffer, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)( + GLuint renderbuffer, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)( + GLuint renderbuffer, + GLsizei coverageSamples, + GLsizei colorSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef GLenum(APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)(GLuint framebuffer, GLenum target); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLint zoffset + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer + ); + typedef void(APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC)(GLuint texture, GLenum target); + typedef void(APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC)(GLenum texunit, GLenum target); + typedef void(APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); + typedef void(APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)(GLuint framebuffer, GLsizei n, const GLenum* bufs); + typedef void(APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); + typedef void(APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)( + GLuint readBuffer, + GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLuint texture, + GLint level + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)( + GLuint framebuffer, + GLenum attachment, + GLuint texture, + GLint level, + GLenum face + ); + typedef void(APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC)(GLuint texture, GLenum target, GLuint renderbuffer); + typedef void(APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC)(GLenum texunit, GLenum target, GLuint renderbuffer); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLenum texunit, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLuint index, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLuint index, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array); + typedef void(APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array); + typedef void(APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index); + typedef void(APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index); + typedef void(APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC)(GLuint vaobj, GLenum pname, GLint* param); + typedef void(APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC)(GLuint vaobj, GLenum pname, void** param); + 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); + typedef void*(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC)( + GLuint buffer, + GLintptr offset, + GLsizeiptr length, + GLbitfield access + ); + typedef void(APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)(GLuint buffer, GLintptr offset, GLsizeiptr length); + typedef void(APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC)( + GLuint buffer, + GLsizeiptr size, + const void* data, + GLbitfield flags + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC)( + GLuint buffer, + GLenum internalformat, + GLenum format, + GLenum type, + const void* data + ); + typedef void(APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)( + GLuint buffer, + GLenum internalformat, + GLsizeiptr offset, + GLsizeiptr size, + GLenum format, + GLenum type, + const void* data + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)(GLuint framebuffer, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC)(GLuint program, GLint location, GLdouble x); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC)(GLuint program, GLint location, GLdouble x, GLdouble y); + typedef void(APIENTRYP + PFNGLPROGRAMUNIFORM3DEXTPROC)(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC)( + GLuint program, + GLint location, + GLdouble x, + GLdouble y, + GLdouble z, + GLdouble w + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC)( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + typedef void(APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC)( + GLuint texture, + GLenum target, + GLenum internalformat, + GLuint buffer, + GLintptr offset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC)( + GLuint texture, + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC)( + GLuint texture, + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC)( + GLuint texture, + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)( + GLuint texture, + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)( + GLuint texture, + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)( + GLuint vaobj, + GLuint bindingindex, + GLuint buffer, + GLintptr offset, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLboolean normalized, + GLuint relativeoffset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLuint relativeoffset + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLuint relativeoffset + ); + typedef void(APIENTRYP + PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)(GLuint vaobj, GLuint attribindex, GLuint bindingindex); + typedef void(APIENTRYP + PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)(GLuint vaobj, GLuint bindingindex, GLuint divisor); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)( + GLuint vaobj, + GLuint buffer, + GLuint index, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + typedef void(APIENTRYP PFNGLTEXTUREPAGECOMMITMENTEXTPROC)( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean commit + ); + typedef void(APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)(GLuint vaobj, GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMatrixLoadfEXT(GLenum mode, const GLfloat* m); + GLAPI void APIENTRY glMatrixLoaddEXT(GLenum mode, const GLdouble* m); + GLAPI void APIENTRY glMatrixMultfEXT(GLenum mode, const GLfloat* m); + GLAPI void APIENTRY glMatrixMultdEXT(GLenum mode, const GLdouble* m); + GLAPI void APIENTRY glMatrixLoadIdentityEXT(GLenum mode); + GLAPI void APIENTRY glMatrixRotatefEXT(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glMatrixRotatedEXT(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glMatrixScalefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glMatrixScaledEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glMatrixTranslatefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glMatrixTranslatedEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glMatrixFrustumEXT( + GLenum mode, + GLdouble left, + GLdouble right, + GLdouble bottom, + GLdouble top, + GLdouble zNear, + GLdouble zFar + ); + GLAPI void APIENTRY glMatrixOrthoEXT( + GLenum mode, + GLdouble left, + GLdouble right, + GLdouble bottom, + GLdouble top, + GLdouble zNear, + GLdouble zFar + ); + GLAPI void APIENTRY glMatrixPopEXT(GLenum mode); + GLAPI void APIENTRY glMatrixPushEXT(GLenum mode); + GLAPI void APIENTRY glClientAttribDefaultEXT(GLbitfield mask); + GLAPI void APIENTRY glPushClientAttribDefaultEXT(GLbitfield mask); + GLAPI void APIENTRY glTextureParameterfEXT(GLuint texture, GLenum target, GLenum pname, GLfloat param); + GLAPI void APIENTRY glTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glTextureParameteriEXT(GLuint texture, GLenum target, GLenum pname, GLint param); + GLAPI void APIENTRY glTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glTextureImage1DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTextureImage2DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTextureSubImage1DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTextureSubImage2DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glCopyTextureImage1DEXT( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLint border + ); + GLAPI void APIENTRY glCopyTextureImage2DEXT( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border + ); + GLAPI void APIENTRY glCopyTextureSubImage1DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint x, + GLint y, + GLsizei width + ); + GLAPI void APIENTRY glCopyTextureSubImage2DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY + glGetTextureImageEXT(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); + GLAPI void APIENTRY glGetTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY + glGetTextureLevelParameterfvEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat* params); + GLAPI void APIENTRY + glGetTextureLevelParameterivEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLint* params); + GLAPI void APIENTRY glTextureImage3DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTextureSubImage3DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glCopyTextureSubImage3DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glBindMultiTextureEXT(GLenum texunit, GLenum target, GLuint texture); + GLAPI void APIENTRY + glMultiTexCoordPointerEXT(GLenum texunit, GLint size, GLenum type, GLsizei stride, const void* pointer); + GLAPI void APIENTRY glMultiTexEnvfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param); + GLAPI void APIENTRY glMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glMultiTexEnviEXT(GLenum texunit, GLenum target, GLenum pname, GLint param); + GLAPI void APIENTRY glMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glMultiTexGendEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble param); + GLAPI void APIENTRY glMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLdouble* params); + GLAPI void APIENTRY glMultiTexGenfEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat param); + GLAPI void APIENTRY glMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glMultiTexGeniEXT(GLenum texunit, GLenum coord, GLenum pname, GLint param); + GLAPI void APIENTRY glMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, const GLint* params); + GLAPI void APIENTRY glGetMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble* params); + GLAPI void APIENTRY glGetMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, GLint* params); + GLAPI void APIENTRY glMultiTexParameteriEXT(GLenum texunit, GLenum target, GLenum pname, GLint param); + GLAPI void APIENTRY glMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glMultiTexParameterfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param); + GLAPI void APIENTRY glMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glMultiTexImage1DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glMultiTexImage2DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glMultiTexSubImage1DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glMultiTexSubImage2DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glCopyMultiTexImage1DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLint border + ); + GLAPI void APIENTRY glCopyMultiTexImage2DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLint x, + GLint y, + GLsizei width, + GLsizei height, + GLint border + ); + GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint x, + GLint y, + GLsizei width + ); + GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY + glGetMultiTexImageEXT(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void* pixels); + GLAPI void APIENTRY glGetMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY + glGetMultiTexLevelParameterfvEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat* params); + GLAPI void APIENTRY + glGetMultiTexLevelParameterivEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint* params); + GLAPI void APIENTRY glMultiTexImage3DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glMultiTexSubImage3DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint x, + GLint y, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glEnableClientStateIndexedEXT(GLenum array, GLuint index); + GLAPI void APIENTRY glDisableClientStateIndexedEXT(GLenum array, GLuint index); + GLAPI void APIENTRY glGetFloatIndexedvEXT(GLenum target, GLuint index, GLfloat* data); + GLAPI void APIENTRY glGetDoubleIndexedvEXT(GLenum target, GLuint index, GLdouble* data); + GLAPI void APIENTRY glGetPointerIndexedvEXT(GLenum target, GLuint index, void** data); + GLAPI void APIENTRY glEnableIndexedEXT(GLenum target, GLuint index); + GLAPI void APIENTRY glDisableIndexedEXT(GLenum target, GLuint index); + GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT(GLenum target, GLuint index); + GLAPI void APIENTRY glGetIntegerIndexedvEXT(GLenum target, GLuint index, GLint* data); + GLAPI void APIENTRY glGetBooleanIndexedvEXT(GLenum target, GLuint index, GLboolean* data); + GLAPI void APIENTRY glCompressedTextureImage3DEXT( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedTextureImage2DEXT( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedTextureImage1DEXT( + GLuint texture, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedTextureSubImage3DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedTextureSubImage2DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedTextureSubImage1DEXT( + GLuint texture, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glGetCompressedTextureImageEXT(GLuint texture, GLenum target, GLint lod, void* img); + GLAPI void APIENTRY glCompressedMultiTexImage3DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedMultiTexImage2DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLint border, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedMultiTexImage1DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLint border, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT( + GLenum texunit, + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLsizei imageSize, + const void* bits + ); + GLAPI void APIENTRY glGetCompressedMultiTexImageEXT(GLenum texunit, GLenum target, GLint lod, void* img); + GLAPI void APIENTRY glMatrixLoadTransposefEXT(GLenum mode, const GLfloat* m); + GLAPI void APIENTRY glMatrixLoadTransposedEXT(GLenum mode, const GLdouble* m); + GLAPI void APIENTRY glMatrixMultTransposefEXT(GLenum mode, const GLfloat* m); + GLAPI void APIENTRY glMatrixMultTransposedEXT(GLenum mode, const GLdouble* m); + GLAPI void APIENTRY glNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const void* data, GLenum usage); + GLAPI void APIENTRY glNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); + GLAPI void* APIENTRY glMapNamedBufferEXT(GLuint buffer, GLenum access); + GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT(GLuint buffer); + GLAPI void APIENTRY glGetNamedBufferParameterivEXT(GLuint buffer, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetNamedBufferPointervEXT(GLuint buffer, GLenum pname, void** params); + GLAPI void APIENTRY glGetNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, void* data); + GLAPI void APIENTRY glProgramUniform1fEXT(GLuint program, GLint location, GLfloat v0); + GLAPI void APIENTRY glProgramUniform2fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1); + GLAPI void APIENTRY glProgramUniform3fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + GLAPI void APIENTRY + glProgramUniform4fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + GLAPI void APIENTRY glProgramUniform1iEXT(GLuint program, GLint location, GLint v0); + GLAPI void APIENTRY glProgramUniform2iEXT(GLuint program, GLint location, GLint v0, GLint v1); + GLAPI void APIENTRY glProgramUniform3iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + GLAPI void APIENTRY glProgramUniform4iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + GLAPI void APIENTRY glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat* value); + GLAPI void APIENTRY glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint* value); + GLAPI void APIENTRY glProgramUniformMatrix2fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat* value + ); + GLAPI void APIENTRY glTextureBufferEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); + GLAPI void APIENTRY glMultiTexBufferEXT(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); + GLAPI void APIENTRY glTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, const GLuint* params); + GLAPI void APIENTRY glGetTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, GLuint* params); + GLAPI void APIENTRY glMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, const GLuint* params); + GLAPI void APIENTRY glGetMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, GLuint* params); + GLAPI void APIENTRY glProgramUniform1uiEXT(GLuint program, GLint location, GLuint v0); + GLAPI void APIENTRY glProgramUniform2uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1); + GLAPI void APIENTRY glProgramUniform3uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + GLAPI void APIENTRY + glProgramUniform4uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + GLAPI void APIENTRY glProgramUniform1uivEXT(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glProgramUniform2uivEXT(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glProgramUniform3uivEXT(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glProgramUniform4uivEXT(GLuint program, GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT( + GLuint program, + GLenum target, + GLuint index, + GLsizei count, + const GLfloat* params + ); + GLAPI void APIENTRY + glNamedProgramLocalParameterI4iEXT(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); + GLAPI void APIENTRY + glNamedProgramLocalParameterI4ivEXT(GLuint program, GLenum target, GLuint index, const GLint* params); + GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT( + GLuint program, + GLenum target, + GLuint index, + GLsizei count, + const GLint* params + ); + GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT( + GLuint program, + GLenum target, + GLuint index, + GLuint x, + GLuint y, + GLuint z, + GLuint w + ); + GLAPI void APIENTRY + glNamedProgramLocalParameterI4uivEXT(GLuint program, GLenum target, GLuint index, const GLuint* params); + GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT( + GLuint program, + GLenum target, + GLuint index, + GLsizei count, + const GLuint* params + ); + GLAPI void APIENTRY + glGetNamedProgramLocalParameterIivEXT(GLuint program, GLenum target, GLuint index, GLint* params); + GLAPI void APIENTRY + glGetNamedProgramLocalParameterIuivEXT(GLuint program, GLenum target, GLuint index, GLuint* params); + GLAPI void APIENTRY glEnableClientStateiEXT(GLenum array, GLuint index); + GLAPI void APIENTRY glDisableClientStateiEXT(GLenum array, GLuint index); + GLAPI void APIENTRY glGetFloati_vEXT(GLenum pname, GLuint index, GLfloat* params); + GLAPI void APIENTRY glGetDoublei_vEXT(GLenum pname, GLuint index, GLdouble* params); + GLAPI void APIENTRY glGetPointeri_vEXT(GLenum pname, GLuint index, void** params); + GLAPI void APIENTRY + glNamedProgramStringEXT(GLuint program, GLenum target, GLenum format, GLsizei len, const void* string); + GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT( + GLuint program, + GLenum target, + GLuint index, + GLdouble x, + GLdouble y, + GLdouble z, + GLdouble w + ); + GLAPI void APIENTRY + glNamedProgramLocalParameter4dvEXT(GLuint program, GLenum target, GLuint index, const GLdouble* params); + GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT( + GLuint program, + GLenum target, + GLuint index, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w + ); + GLAPI void APIENTRY + glNamedProgramLocalParameter4fvEXT(GLuint program, GLenum target, GLuint index, const GLfloat* params); + GLAPI void APIENTRY + glGetNamedProgramLocalParameterdvEXT(GLuint program, GLenum target, GLuint index, GLdouble* params); + GLAPI void APIENTRY + glGetNamedProgramLocalParameterfvEXT(GLuint program, GLenum target, GLuint index, GLfloat* params); + GLAPI void APIENTRY glGetNamedProgramivEXT(GLuint program, GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetNamedProgramStringEXT(GLuint program, GLenum target, GLenum pname, void* string); + GLAPI void APIENTRY + glNamedRenderbufferStorageEXT(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT(GLuint renderbuffer, GLenum pname, GLint* params); + GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT( + GLuint renderbuffer, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT( + GLuint renderbuffer, + GLsizei coverageSamples, + GLsizei colorSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT(GLuint framebuffer, GLenum target); + GLAPI void APIENTRY glNamedFramebufferTexture1DEXT( + GLuint framebuffer, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level + ); + GLAPI void APIENTRY glNamedFramebufferTexture2DEXT( + GLuint framebuffer, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level + ); + GLAPI void APIENTRY glNamedFramebufferTexture3DEXT( + GLuint framebuffer, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLint zoffset + ); + GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT( + GLuint framebuffer, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer + ); + GLAPI void APIENTRY + glGetNamedFramebufferAttachmentParameterivEXT(GLuint framebuffer, GLenum attachment, GLenum pname, GLint* params); + GLAPI void APIENTRY glGenerateTextureMipmapEXT(GLuint texture, GLenum target); + GLAPI void APIENTRY glGenerateMultiTexMipmapEXT(GLenum texunit, GLenum target); + GLAPI void APIENTRY glFramebufferDrawBufferEXT(GLuint framebuffer, GLenum mode); + GLAPI void APIENTRY glFramebufferDrawBuffersEXT(GLuint framebuffer, GLsizei n, const GLenum* bufs); + GLAPI void APIENTRY glFramebufferReadBufferEXT(GLuint framebuffer, GLenum mode); + GLAPI void APIENTRY glGetFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint* params); + GLAPI void APIENTRY glNamedCopyBufferSubDataEXT( + GLuint readBuffer, + GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size + ); + GLAPI void APIENTRY + glNamedFramebufferTextureEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); + GLAPI void APIENTRY + glNamedFramebufferTextureLayerEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); + GLAPI void APIENTRY + glNamedFramebufferTextureFaceEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); + GLAPI void APIENTRY glTextureRenderbufferEXT(GLuint texture, GLenum target, GLuint renderbuffer); + GLAPI void APIENTRY glMultiTexRenderbufferEXT(GLenum texunit, GLenum target, GLuint renderbuffer); + GLAPI void APIENTRY + glVertexArrayVertexOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); + GLAPI void APIENTRY + glVertexArrayColorOffsetEXT(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset); + GLAPI void APIENTRY glVertexArrayEdgeFlagOffsetEXT(GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset); + GLAPI void APIENTRY + glVertexArrayIndexOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); + GLAPI void APIENTRY + glVertexArrayNormalOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); + GLAPI void APIENTRY glVertexArrayTexCoordOffsetEXT( + GLuint vaobj, + GLuint buffer, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + GLAPI void APIENTRY glVertexArrayMultiTexCoordOffsetEXT( + GLuint vaobj, + GLuint buffer, + GLenum texunit, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + GLAPI void APIENTRY + glVertexArrayFogCoordOffsetEXT(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset); + GLAPI void APIENTRY glVertexArraySecondaryColorOffsetEXT( + GLuint vaobj, + GLuint buffer, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + GLAPI void APIENTRY glVertexArrayVertexAttribOffsetEXT( + GLuint vaobj, + GLuint buffer, + GLuint index, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + GLintptr offset + ); + GLAPI void APIENTRY glVertexArrayVertexAttribIOffsetEXT( + GLuint vaobj, + GLuint buffer, + GLuint index, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + GLAPI void APIENTRY glEnableVertexArrayEXT(GLuint vaobj, GLenum array); + GLAPI void APIENTRY glDisableVertexArrayEXT(GLuint vaobj, GLenum array); + GLAPI void APIENTRY glEnableVertexArrayAttribEXT(GLuint vaobj, GLuint index); + GLAPI void APIENTRY glDisableVertexArrayAttribEXT(GLuint vaobj, GLuint index); + GLAPI void APIENTRY glGetVertexArrayIntegervEXT(GLuint vaobj, GLenum pname, GLint* param); + GLAPI void APIENTRY glGetVertexArrayPointervEXT(GLuint vaobj, GLenum pname, void** param); + GLAPI void APIENTRY glGetVertexArrayIntegeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, GLint* param); + GLAPI void APIENTRY glGetVertexArrayPointeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, void** param); + GLAPI void* APIENTRY glMapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); + GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length); + GLAPI void APIENTRY glNamedBufferStorageEXT(GLuint buffer, GLsizeiptr size, const void* data, GLbitfield flags); + GLAPI void APIENTRY + glClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void* data); + GLAPI void APIENTRY glClearNamedBufferSubDataEXT( + GLuint buffer, + GLenum internalformat, + GLsizeiptr offset, + GLsizeiptr size, + GLenum format, + GLenum type, + const void* data + ); + GLAPI void APIENTRY glNamedFramebufferParameteriEXT(GLuint framebuffer, GLenum pname, GLint param); + GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint* params); + GLAPI void APIENTRY glProgramUniform1dEXT(GLuint program, GLint location, GLdouble x); + GLAPI void APIENTRY glProgramUniform2dEXT(GLuint program, GLint location, GLdouble x, GLdouble y); + GLAPI void APIENTRY glProgramUniform3dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY + glProgramUniform4dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glProgramUniform1dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniform2dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniform3dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniform4dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble* value); + GLAPI void APIENTRY glProgramUniformMatrix2dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT( + GLuint program, + GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble* value + ); + GLAPI void APIENTRY glTextureBufferRangeEXT( + GLuint texture, + GLenum target, + GLenum internalformat, + GLuint buffer, + GLintptr offset, + GLsizeiptr size + ); + GLAPI void APIENTRY + glTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + GLAPI void APIENTRY glTextureStorage2DEXT( + GLuint texture, + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + GLAPI void APIENTRY glTextureStorage3DEXT( + GLuint texture, + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth + ); + GLAPI void APIENTRY glTextureStorage2DMultisampleEXT( + GLuint texture, + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY glTextureStorage3DMultisampleEXT( + GLuint texture, + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations + ); + GLAPI void APIENTRY + glVertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + GLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLboolean normalized, + GLuint relativeoffset + ); + GLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLuint relativeoffset + ); + GLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT( + GLuint vaobj, + GLuint attribindex, + GLint size, + GLenum type, + GLuint relativeoffset + ); + GLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint attribindex, GLuint bindingindex); + GLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bindingindex, GLuint divisor); + GLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT( + GLuint vaobj, + GLuint buffer, + GLuint index, + GLint size, + GLenum type, + GLsizei stride, + GLintptr offset + ); + GLAPI void APIENTRY glTexturePageCommitmentEXT( + GLuint texture, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean commit + ); + GLAPI void APIENTRY glVertexArrayVertexAttribDivisorEXT(GLuint vaobj, GLuint index, GLuint divisor); +#endif +#endif /* GL_EXT_direct_state_access */ + +#ifndef GL_EXT_draw_buffers2 +#define GL_EXT_draw_buffers2 1 + typedef void(APIENTRYP + PFNGLCOLORMASKINDEXEDEXTPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glColorMaskIndexedEXT(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +#endif +#endif /* GL_EXT_draw_buffers2 */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 + typedef void(APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC)(GLenum mode, GLint start, GLsizei count, GLsizei primcount); + typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC)( + GLenum mode, + GLsizei count, + GLenum type, + const void* indices, + GLsizei primcount + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawArraysInstancedEXT(GLenum mode, GLint start, GLsizei count, GLsizei primcount); + GLAPI void APIENTRY + glDrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); +#endif +#endif /* GL_EXT_draw_instanced */ + +#ifndef GL_EXT_draw_range_elements +#define GL_EXT_draw_range_elements 1 +#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 +#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 + typedef void(APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC)( + GLenum mode, + GLuint start, + GLuint end, + GLsizei count, + GLenum type, + const void* indices + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glDrawRangeElementsEXT(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void* indices); +#endif +#endif /* GL_EXT_draw_range_elements */ + +#ifndef GL_EXT_external_buffer +#define GL_EXT_external_buffer 1 + typedef void* GLeglClientBufferEXT; + typedef void(APIENTRYP PFNGLBUFFERSTORAGEEXTERNALEXTPROC)( + GLenum target, + GLintptr offset, + GLsizeiptr size, + GLeglClientBufferEXT clientBuffer, + GLbitfield flags + ); + typedef void(APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC)( + GLuint buffer, + GLintptr offset, + GLsizeiptr size, + GLeglClientBufferEXT clientBuffer, + GLbitfield flags + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBufferStorageExternalEXT( + GLenum target, + GLintptr offset, + GLsizeiptr size, + GLeglClientBufferEXT clientBuffer, + GLbitfield flags + ); + GLAPI void APIENTRY glNamedBufferStorageExternalEXT( + GLuint buffer, + GLintptr offset, + GLsizeiptr size, + GLeglClientBufferEXT clientBuffer, + GLbitfield flags + ); +#endif +#endif /* GL_EXT_external_buffer */ + +#ifndef GL_EXT_fog_coord +#define GL_EXT_fog_coord 1 +#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 +#define GL_FOG_COORDINATE_EXT 0x8451 +#define GL_FRAGMENT_DEPTH_EXT 0x8452 +#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 +#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 + typedef void(APIENTRYP PFNGLFOGCOORDFEXTPROC)(GLfloat coord); + typedef void(APIENTRYP PFNGLFOGCOORDFVEXTPROC)(const GLfloat* coord); + typedef void(APIENTRYP PFNGLFOGCOORDDEXTPROC)(GLdouble coord); + typedef void(APIENTRYP PFNGLFOGCOORDDVEXTPROC)(const GLdouble* coord); + typedef void(APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC)(GLenum type, GLsizei stride, const void* pointer); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFogCoordfEXT(GLfloat coord); + GLAPI void APIENTRY glFogCoordfvEXT(const GLfloat* coord); + GLAPI void APIENTRY glFogCoorddEXT(GLdouble coord); + GLAPI void APIENTRY glFogCoorddvEXT(const GLdouble* coord); + GLAPI void APIENTRY glFogCoordPointerEXT(GLenum type, GLsizei stride, const void* pointer); +#endif +#endif /* GL_EXT_fog_coord */ + +#ifndef GL_EXT_fragment_shading_rate +#define GL_EXT_fragment_shading_rate 1 +#define GL_SHADING_RATE_1X1_PIXELS_EXT 0x96A6 +#define GL_SHADING_RATE_1X2_PIXELS_EXT 0x96A7 +#define GL_SHADING_RATE_2X1_PIXELS_EXT 0x96A8 +#define GL_SHADING_RATE_2X2_PIXELS_EXT 0x96A9 +#define GL_SHADING_RATE_1X4_PIXELS_EXT 0x96AA +#define GL_SHADING_RATE_4X1_PIXELS_EXT 0x96AB +#define GL_SHADING_RATE_4X2_PIXELS_EXT 0x96AC +#define GL_SHADING_RATE_2X4_PIXELS_EXT 0x96AD +#define GL_SHADING_RATE_4X4_PIXELS_EXT 0x96AE +#define GL_SHADING_RATE_EXT 0x96D0 +#define GL_SHADING_RATE_ATTACHMENT_EXT 0x96D1 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT 0x96D2 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_EXT 0x96D3 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_EXT 0x96D4 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_EXT 0x96D5 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_EXT 0x96D6 +#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D7 +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D8 +#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96D9 +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96DA +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_ASPECT_RATIO_EXT 0x96DB +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_LAYERS_EXT 0x96DC +#define GL_FRAGMENT_SHADING_RATE_WITH_SHADER_DEPTH_STENCIL_WRITES_SUPPORTED_EXT 0x96DD +#define GL_FRAGMENT_SHADING_RATE_WITH_SAMPLE_MASK_SUPPORTED_EXT 0x96DE +#define GL_FRAGMENT_SHADING_RATE_ATTACHMENT_WITH_DEFAULT_FRAMEBUFFER_SUPPORTED_EXT 0x96DF +#define GL_FRAGMENT_SHADING_RATE_NON_TRIVIAL_COMBINERS_SUPPORTED_EXT 0x8F6F +#define GL_FRAGMENT_SHADING_RATE_PRIMITIVE_RATE_WITH_MULTI_VIEWPORT_SUPPORTED_EXT 0x9780 + typedef void(APIENTRYP PFNGLGETFRAGMENTSHADINGRATESEXTPROC)( + GLsizei samples, + GLsizei maxCount, + GLsizei* count, + GLenum* shadingRates + ); + typedef void(APIENTRYP PFNGLSHADINGRATEEXTPROC)(GLenum rate); + typedef void(APIENTRYP PFNGLSHADINGRATECOMBINEROPSEXTPROC)(GLenum combinerOp0, GLenum combinerOp1); + typedef void(APIENTRYP PFNGLFRAMEBUFFERSHADINGRATEEXTPROC)( + GLenum target, + GLenum attachment, + GLuint texture, + GLint baseLayer, + GLsizei numLayers, + GLsizei texelWidth, + GLsizei texelHeight + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glGetFragmentShadingRatesEXT(GLsizei samples, GLsizei maxCount, GLsizei* count, GLenum* shadingRates); + GLAPI void APIENTRY glShadingRateEXT(GLenum rate); + GLAPI void APIENTRY glShadingRateCombinerOpsEXT(GLenum combinerOp0, GLenum combinerOp1); + GLAPI void APIENTRY glFramebufferShadingRateEXT( + GLenum target, + GLenum attachment, + GLuint texture, + GLint baseLayer, + GLsizei numLayers, + GLsizei texelWidth, + GLsizei texelHeight + ); +#endif +#endif /* GL_EXT_fragment_shading_rate */ + +#ifndef GL_EXT_framebuffer_blit +#define GL_EXT_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA + typedef void(APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC)( + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBlitFramebufferEXT( + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter + ); +#endif +#endif /* GL_EXT_framebuffer_blit */ + +#ifndef GL_EXT_framebuffer_blit_layers +#define GL_EXT_framebuffer_blit_layers 1 + typedef void(APIENTRYP PFNGLBLITFRAMEBUFFERLAYERSEXTPROC)( + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter + ); + typedef void(APIENTRYP PFNGLBLITFRAMEBUFFERLAYEREXTPROC)( + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint srcLayer, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLint dstLayer, + GLbitfield mask, + GLenum filter + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBlitFramebufferLayersEXT( + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter + ); + GLAPI void APIENTRY glBlitFramebufferLayerEXT( + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint srcLayer, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLint dstLayer, + GLbitfield mask, + GLenum filter + ); +#endif +#endif /* GL_EXT_framebuffer_blit_layers */ + +#ifndef GL_EXT_framebuffer_multisample +#define GL_EXT_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 + typedef void(APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT( + GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); +#endif +#endif /* GL_EXT_framebuffer_multisample */ + +#ifndef GL_EXT_framebuffer_multisample_blit_scaled +#define GL_EXT_framebuffer_multisample_blit_scaled 1 +#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA +#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB +#endif /* GL_EXT_framebuffer_multisample_blit_scaled */ + +#ifndef GL_EXT_framebuffer_object +#define GL_EXT_framebuffer_object 1 +#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 +#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 +#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 +#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 +#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 +#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 +#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 +#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 +#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 +#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 +#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 +#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 +#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA +#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB +#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC +#define GL_COLOR_ATTACHMENT13_EXT 0x8CED +#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE +#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF +#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 +#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 +#define GL_FRAMEBUFFER_EXT 0x8D40 +#define GL_RENDERBUFFER_EXT 0x8D41 +#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 +#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 +#define GL_STENCIL_INDEX1_EXT 0x8D46 +#define GL_STENCIL_INDEX4_EXT 0x8D47 +#define GL_STENCIL_INDEX8_EXT 0x8D48 +#define GL_STENCIL_INDEX16_EXT 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 + typedef GLboolean(APIENTRYP PFNGLISRENDERBUFFEREXTPROC)(GLuint renderbuffer); + typedef void(APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC)(GLenum target, GLuint renderbuffer); + typedef void(APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC)(GLsizei n, const GLuint* renderbuffers); + typedef void(APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC)(GLsizei n, GLuint* renderbuffers); + typedef void(APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC)( + GLenum target, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint* params); + typedef GLboolean(APIENTRYP PFNGLISFRAMEBUFFEREXTPROC)(GLuint framebuffer); + typedef void(APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC)(GLenum target, GLuint framebuffer); + typedef void(APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC)(GLsizei n, const GLuint* framebuffers); + typedef void(APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC)(GLsizei n, GLuint* framebuffers); + typedef GLenum(APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)(GLenum target); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)( + GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level + ); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)( + GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level + ); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)( + GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLint zoffset + ); + typedef void(APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)( + GLenum target, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer + ); + typedef void(APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)( + GLenum target, + GLenum attachment, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLGENERATEMIPMAPEXTPROC)(GLenum target); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLboolean APIENTRY glIsRenderbufferEXT(GLuint renderbuffer); + GLAPI void APIENTRY glBindRenderbufferEXT(GLenum target, GLuint renderbuffer); + GLAPI void APIENTRY glDeleteRenderbuffersEXT(GLsizei n, const GLuint* renderbuffers); + GLAPI void APIENTRY glGenRenderbuffersEXT(GLsizei n, GLuint* renderbuffers); + GLAPI void APIENTRY glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI void APIENTRY glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint* params); + GLAPI GLboolean APIENTRY glIsFramebufferEXT(GLuint framebuffer); + GLAPI void APIENTRY glBindFramebufferEXT(GLenum target, GLuint framebuffer); + GLAPI void APIENTRY glDeleteFramebuffersEXT(GLsizei n, const GLuint* framebuffers); + GLAPI void APIENTRY glGenFramebuffersEXT(GLsizei n, GLuint* framebuffers); + GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT(GLenum target); + GLAPI void APIENTRY + glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLAPI void APIENTRY + glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); + GLAPI void APIENTRY glFramebufferTexture3DEXT( + GLenum target, + GLenum attachment, + GLenum textarget, + GLuint texture, + GLint level, + GLint zoffset + ); + GLAPI void APIENTRY + glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); + GLAPI void APIENTRY + glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint* params); + GLAPI void APIENTRY glGenerateMipmapEXT(GLenum target); +#endif +#endif /* GL_EXT_framebuffer_object */ + +#ifndef GL_EXT_framebuffer_sRGB +#define GL_EXT_framebuffer_sRGB 1 +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA +#endif /* GL_EXT_framebuffer_sRGB */ + +#ifndef GL_EXT_geometry_shader4 +#define GL_EXT_geometry_shader4 1 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD +#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE +#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_LINES_ADJACENCY_EXT 0x000A +#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B +#define GL_TRIANGLES_ADJACENCY_EXT 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 +#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 + typedef void(APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC)(GLuint program, GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glProgramParameteriEXT(GLuint program, GLenum pname, GLint value); +#endif +#endif /* GL_EXT_geometry_shader4 */ + +#ifndef GL_EXT_gpu_program_parameters +#define GL_EXT_gpu_program_parameters 1 + typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)( + GLenum target, + GLuint index, + GLsizei count, + const GLfloat* params + ); + typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)( + GLenum target, + GLuint index, + GLsizei count, + const GLfloat* params + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glProgramEnvParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat* params); + GLAPI void APIENTRY + glProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat* params); +#endif +#endif /* GL_EXT_gpu_program_parameters */ + +#ifndef GL_EXT_gpu_shader4 +#define GL_EXT_gpu_shader4 1 +#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 +#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 +#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 +#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 +#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 +#define GL_INT_SAMPLER_1D_EXT 0x8DC9 +#define GL_INT_SAMPLER_2D_EXT 0x8DCA +#define GL_INT_SAMPLER_3D_EXT 0x8DCB +#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC +#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD +#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD + typedef void(APIENTRYP PFNGLGETUNIFORMUIVEXTPROC)(GLuint program, GLint location, GLuint* params); + typedef void(APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC)(GLuint program, GLuint color, const GLchar* name); + typedef GLint(APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC)(GLuint program, const GLchar* name); + typedef void(APIENTRYP PFNGLUNIFORM1UIEXTPROC)(GLint location, GLuint v0); + typedef void(APIENTRYP PFNGLUNIFORM2UIEXTPROC)(GLint location, GLuint v0, GLuint v1); + typedef void(APIENTRYP PFNGLUNIFORM3UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); + typedef void(APIENTRYP PFNGLUNIFORM4UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + typedef void(APIENTRYP PFNGLUNIFORM1UIVEXTPROC)(GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLUNIFORM2UIVEXTPROC)(GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLUNIFORM3UIVEXTPROC)(GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLUNIFORM4UIVEXTPROC)(GLint location, GLsizei count, const GLuint* value); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC)(GLuint index, GLint x); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC)(GLuint index, GLint x, GLint y); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC)(GLuint index, GLint x, GLint y, GLint z); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC)(GLuint index, GLuint x); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC)(GLuint index, GLuint x, GLuint y); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC)(GLuint index, GLuint x, GLuint y, GLuint z); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC)(GLuint index, const GLint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC)(GLuint index, const GLuint* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC)(GLuint index, const GLbyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC)(GLuint index, const GLubyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC)(GLuint index, const GLushort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC)( + GLuint index, + GLint size, + GLenum type, + GLsizei stride, + const void* pointer + ); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC)(GLuint index, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC)(GLuint index, GLenum pname, GLuint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGetUniformuivEXT(GLuint program, GLint location, GLuint* params); + GLAPI void APIENTRY glBindFragDataLocationEXT(GLuint program, GLuint color, const GLchar* name); + GLAPI GLint APIENTRY glGetFragDataLocationEXT(GLuint program, const GLchar* name); + GLAPI void APIENTRY glUniform1uiEXT(GLint location, GLuint v0); + GLAPI void APIENTRY glUniform2uiEXT(GLint location, GLuint v0, GLuint v1); + GLAPI void APIENTRY glUniform3uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2); + GLAPI void APIENTRY glUniform4uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + GLAPI void APIENTRY glUniform1uivEXT(GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glUniform2uivEXT(GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glUniform3uivEXT(GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glUniform4uivEXT(GLint location, GLsizei count, const GLuint* value); + GLAPI void APIENTRY glVertexAttribI1iEXT(GLuint index, GLint x); + GLAPI void APIENTRY glVertexAttribI2iEXT(GLuint index, GLint x, GLint y); + GLAPI void APIENTRY glVertexAttribI3iEXT(GLuint index, GLint x, GLint y, GLint z); + GLAPI void APIENTRY glVertexAttribI4iEXT(GLuint index, GLint x, GLint y, GLint z, GLint w); + GLAPI void APIENTRY glVertexAttribI1uiEXT(GLuint index, GLuint x); + GLAPI void APIENTRY glVertexAttribI2uiEXT(GLuint index, GLuint x, GLuint y); + GLAPI void APIENTRY glVertexAttribI3uiEXT(GLuint index, GLuint x, GLuint y, GLuint z); + GLAPI void APIENTRY glVertexAttribI4uiEXT(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + GLAPI void APIENTRY glVertexAttribI1ivEXT(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttribI2ivEXT(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttribI3ivEXT(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttribI4ivEXT(GLuint index, const GLint* v); + GLAPI void APIENTRY glVertexAttribI1uivEXT(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttribI2uivEXT(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttribI3uivEXT(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttribI4uivEXT(GLuint index, const GLuint* v); + GLAPI void APIENTRY glVertexAttribI4bvEXT(GLuint index, const GLbyte* v); + GLAPI void APIENTRY glVertexAttribI4svEXT(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttribI4ubvEXT(GLuint index, const GLubyte* v); + GLAPI void APIENTRY glVertexAttribI4usvEXT(GLuint index, const GLushort* v); + GLAPI void APIENTRY + glVertexAttribIPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); + GLAPI void APIENTRY glGetVertexAttribIivEXT(GLuint index, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetVertexAttribIuivEXT(GLuint index, GLenum pname, GLuint* params); +#endif +#endif /* GL_EXT_gpu_shader4 */ + +#ifndef GL_EXT_histogram +#define GL_EXT_histogram 1 +#define GL_HISTOGRAM_EXT 0x8024 +#define GL_PROXY_HISTOGRAM_EXT 0x8025 +#define GL_HISTOGRAM_WIDTH_EXT 0x8026 +#define GL_HISTOGRAM_FORMAT_EXT 0x8027 +#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C +#define GL_HISTOGRAM_SINK_EXT 0x802D +#define GL_MINMAX_EXT 0x802E +#define GL_MINMAX_FORMAT_EXT 0x802F +#define GL_MINMAX_SINK_EXT 0x8030 +#define GL_TABLE_TOO_LARGE_EXT 0x8031 + typedef void(APIENTRYP PFNGLGETHISTOGRAMEXTPROC)( + GLenum target, + GLboolean reset, + GLenum format, + GLenum type, + void* values + ); + typedef void(APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP + PFNGLGETMINMAXEXTPROC)(GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); + typedef void(APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLHISTOGRAMEXTPROC)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + typedef void(APIENTRYP PFNGLMINMAXEXTPROC)(GLenum target, GLenum internalformat, GLboolean sink); + typedef void(APIENTRYP PFNGLRESETHISTOGRAMEXTPROC)(GLenum target); + typedef void(APIENTRYP PFNGLRESETMINMAXEXTPROC)(GLenum target); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGetHistogramEXT(GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); + GLAPI void APIENTRY glGetHistogramParameterfvEXT(GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetHistogramParameterivEXT(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetMinmaxEXT(GLenum target, GLboolean reset, GLenum format, GLenum type, void* values); + GLAPI void APIENTRY glGetMinmaxParameterfvEXT(GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetMinmaxParameterivEXT(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glHistogramEXT(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); + GLAPI void APIENTRY glMinmaxEXT(GLenum target, GLenum internalformat, GLboolean sink); + GLAPI void APIENTRY glResetHistogramEXT(GLenum target); + GLAPI void APIENTRY glResetMinmaxEXT(GLenum target); +#endif +#endif /* GL_EXT_histogram */ + +#ifndef GL_EXT_index_array_formats +#define GL_EXT_index_array_formats 1 +#define GL_IUI_V2F_EXT 0x81AD +#define GL_IUI_V3F_EXT 0x81AE +#define GL_IUI_N3F_V2F_EXT 0x81AF +#define GL_IUI_N3F_V3F_EXT 0x81B0 +#define GL_T2F_IUI_V2F_EXT 0x81B1 +#define GL_T2F_IUI_V3F_EXT 0x81B2 +#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 +#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 +#endif /* GL_EXT_index_array_formats */ + +#ifndef GL_EXT_index_func +#define GL_EXT_index_func 1 +#define GL_INDEX_TEST_EXT 0x81B5 +#define GL_INDEX_TEST_FUNC_EXT 0x81B6 +#define GL_INDEX_TEST_REF_EXT 0x81B7 + typedef void(APIENTRYP PFNGLINDEXFUNCEXTPROC)(GLenum func, GLclampf ref); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glIndexFuncEXT(GLenum func, GLclampf ref); +#endif +#endif /* GL_EXT_index_func */ + +#ifndef GL_EXT_index_material +#define GL_EXT_index_material 1 +#define GL_INDEX_MATERIAL_EXT 0x81B8 +#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 +#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA + typedef void(APIENTRYP PFNGLINDEXMATERIALEXTPROC)(GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glIndexMaterialEXT(GLenum face, GLenum mode); +#endif +#endif /* GL_EXT_index_material */ + +#ifndef GL_EXT_index_texture +#define GL_EXT_index_texture 1 +#endif /* GL_EXT_index_texture */ + +#ifndef GL_EXT_light_texture +#define GL_EXT_light_texture 1 +#define GL_FRAGMENT_MATERIAL_EXT 0x8349 +#define GL_FRAGMENT_NORMAL_EXT 0x834A +#define GL_FRAGMENT_COLOR_EXT 0x834C +#define GL_ATTENUATION_EXT 0x834D +#define GL_SHADOW_ATTENUATION_EXT 0x834E +#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F +#define GL_TEXTURE_LIGHT_EXT 0x8350 +#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 +#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 + typedef void(APIENTRYP PFNGLAPPLYTEXTUREEXTPROC)(GLenum mode); + typedef void(APIENTRYP PFNGLTEXTURELIGHTEXTPROC)(GLenum pname); + typedef void(APIENTRYP PFNGLTEXTUREMATERIALEXTPROC)(GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glApplyTextureEXT(GLenum mode); + GLAPI void APIENTRY glTextureLightEXT(GLenum pname); + GLAPI void APIENTRY glTextureMaterialEXT(GLenum face, GLenum mode); +#endif +#endif /* GL_EXT_light_texture */ + +#ifndef GL_EXT_memory_object +#define GL_EXT_memory_object 1 +#define GL_TEXTURE_TILING_EXT 0x9580 +#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581 +#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B +#define GL_NUM_TILING_TYPES_EXT 0x9582 +#define GL_TILING_TYPES_EXT 0x9583 +#define GL_OPTIMAL_TILING_EXT 0x9584 +#define GL_LINEAR_TILING_EXT 0x9585 +#define GL_NUM_DEVICE_UUIDS_EXT 0x9596 +#define GL_DEVICE_UUID_EXT 0x9597 +#define GL_DRIVER_UUID_EXT 0x9598 +#define GL_UUID_SIZE_EXT 16 + typedef void(APIENTRYP PFNGLGETUNSIGNEDBYTEVEXTPROC)(GLenum pname, GLubyte* data); + typedef void(APIENTRYP PFNGLGETUNSIGNEDBYTEI_VEXTPROC)(GLenum target, GLuint index, GLubyte* data); + typedef void(APIENTRYP PFNGLDELETEMEMORYOBJECTSEXTPROC)(GLsizei n, const GLuint* memoryObjects); + typedef GLboolean(APIENTRYP PFNGLISMEMORYOBJECTEXTPROC)(GLuint memoryObject); + typedef void(APIENTRYP PFNGLCREATEMEMORYOBJECTSEXTPROC)(GLsizei n, GLuint* memoryObjects); + typedef void(APIENTRYP PFNGLMEMORYOBJECTPARAMETERIVEXTPROC)(GLuint memoryObject, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC)(GLuint memoryObject, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLTEXSTORAGEMEM2DEXTPROC)( + GLenum target, + GLsizei levels, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLuint memory, + GLuint64 offset + ); + typedef void(APIENTRYP PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC)( + GLenum target, + GLsizei samples, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLboolean fixedSampleLocations, + GLuint memory, + GLuint64 offset + ); + typedef void(APIENTRYP PFNGLTEXSTORAGEMEM3DEXTPROC)( + GLenum target, + GLsizei levels, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLuint memory, + GLuint64 offset + ); + typedef void(APIENTRYP PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC)( + GLenum target, + GLsizei samples, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedSampleLocations, + GLuint memory, + GLuint64 offset + ); + typedef void(APIENTRYP + PFNGLBUFFERSTORAGEMEMEXTPROC)(GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); + typedef void(APIENTRYP PFNGLTEXTURESTORAGEMEM2DEXTPROC)( + GLuint texture, + GLsizei levels, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLuint memory, + GLuint64 offset + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC)( + GLuint texture, + GLsizei samples, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLboolean fixedSampleLocations, + GLuint memory, + GLuint64 offset + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGEMEM3DEXTPROC)( + GLuint texture, + GLsizei levels, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLuint memory, + GLuint64 offset + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC)( + GLuint texture, + GLsizei samples, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedSampleLocations, + GLuint memory, + GLuint64 offset + ); + typedef void(APIENTRYP + PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC)(GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); + typedef void(APIENTRYP PFNGLTEXSTORAGEMEM1DEXTPROC)( + GLenum target, + GLsizei levels, + GLenum internalFormat, + GLsizei width, + GLuint memory, + GLuint64 offset + ); + typedef void(APIENTRYP PFNGLTEXTURESTORAGEMEM1DEXTPROC)( + GLuint texture, + GLsizei levels, + GLenum internalFormat, + GLsizei width, + GLuint memory, + GLuint64 offset + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGetUnsignedBytevEXT(GLenum pname, GLubyte* data); + GLAPI void APIENTRY glGetUnsignedBytei_vEXT(GLenum target, GLuint index, GLubyte* data); + GLAPI void APIENTRY glDeleteMemoryObjectsEXT(GLsizei n, const GLuint* memoryObjects); + GLAPI GLboolean APIENTRY glIsMemoryObjectEXT(GLuint memoryObject); + GLAPI void APIENTRY glCreateMemoryObjectsEXT(GLsizei n, GLuint* memoryObjects); + GLAPI void APIENTRY glMemoryObjectParameterivEXT(GLuint memoryObject, GLenum pname, const GLint* params); + GLAPI void APIENTRY glGetMemoryObjectParameterivEXT(GLuint memoryObject, GLenum pname, GLint* params); + GLAPI void APIENTRY glTexStorageMem2DEXT( + GLenum target, + GLsizei levels, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLuint memory, + GLuint64 offset + ); + GLAPI void APIENTRY glTexStorageMem2DMultisampleEXT( + GLenum target, + GLsizei samples, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLboolean fixedSampleLocations, + GLuint memory, + GLuint64 offset + ); + GLAPI void APIENTRY glTexStorageMem3DEXT( + GLenum target, + GLsizei levels, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLuint memory, + GLuint64 offset + ); + GLAPI void APIENTRY glTexStorageMem3DMultisampleEXT( + GLenum target, + GLsizei samples, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedSampleLocations, + GLuint memory, + GLuint64 offset + ); + GLAPI void APIENTRY glBufferStorageMemEXT(GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); + GLAPI void APIENTRY glTextureStorageMem2DEXT( + GLuint texture, + GLsizei levels, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLuint memory, + GLuint64 offset + ); + GLAPI void APIENTRY glTextureStorageMem2DMultisampleEXT( + GLuint texture, + GLsizei samples, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLboolean fixedSampleLocations, + GLuint memory, + GLuint64 offset + ); + GLAPI void APIENTRY glTextureStorageMem3DEXT( + GLuint texture, + GLsizei levels, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLuint memory, + GLuint64 offset + ); + GLAPI void APIENTRY glTextureStorageMem3DMultisampleEXT( + GLuint texture, + GLsizei samples, + GLenum internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedSampleLocations, + GLuint memory, + GLuint64 offset + ); + GLAPI void APIENTRY glNamedBufferStorageMemEXT(GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); + GLAPI void APIENTRY glTexStorageMem1DEXT( + GLenum target, + GLsizei levels, + GLenum internalFormat, + GLsizei width, + GLuint memory, + GLuint64 offset + ); + GLAPI void APIENTRY glTextureStorageMem1DEXT( + GLuint texture, + GLsizei levels, + GLenum internalFormat, + GLsizei width, + GLuint memory, + GLuint64 offset + ); +#endif +#endif /* GL_EXT_memory_object */ + +#ifndef GL_EXT_memory_object_fd +#define GL_EXT_memory_object_fd 1 +#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586 + typedef void(APIENTRYP PFNGLIMPORTMEMORYFDEXTPROC)(GLuint memory, GLuint64 size, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glImportMemoryFdEXT(GLuint memory, GLuint64 size, GLenum handleType, GLint fd); +#endif +#endif /* GL_EXT_memory_object_fd */ + +#ifndef GL_EXT_memory_object_win32 +#define GL_EXT_memory_object_win32 1 +#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587 +#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588 +#define GL_DEVICE_LUID_EXT 0x9599 +#define GL_DEVICE_NODE_MASK_EXT 0x959A +#define GL_LUID_SIZE_EXT 8 +#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589 +#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A +#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B +#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C + typedef void(APIENTRYP PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC)( + GLuint memory, + GLuint64 size, + GLenum handleType, + void* handle + ); + typedef void(APIENTRYP PFNGLIMPORTMEMORYWIN32NAMEEXTPROC)( + GLuint memory, + GLuint64 size, + GLenum handleType, + const void* name + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glImportMemoryWin32HandleEXT(GLuint memory, GLuint64 size, GLenum handleType, void* handle); + GLAPI void APIENTRY glImportMemoryWin32NameEXT(GLuint memory, GLuint64 size, GLenum handleType, const void* name); +#endif +#endif /* GL_EXT_memory_object_win32 */ + +#ifndef GL_EXT_mesh_shader +#define GL_EXT_mesh_shader 1 +#define GL_MESH_SHADER_EXT 0x9559 +#define GL_TASK_SHADER_EXT 0x955A +#define GL_MAX_MESH_UNIFORM_BLOCKS_EXT 0x8E60 +#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_EXT 0x8E61 +#define GL_MAX_MESH_IMAGE_UNIFORMS_EXT 0x8E62 +#define GL_MAX_MESH_UNIFORM_COMPONENTS_EXT 0x8E63 +#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_EXT 0x8E64 +#define GL_MAX_MESH_ATOMIC_COUNTERS_EXT 0x8E65 +#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_EXT 0x8E66 +#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_EXT 0x8E67 +#define GL_MAX_TASK_UNIFORM_BLOCKS_EXT 0x8E68 +#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_EXT 0x8E69 +#define GL_MAX_TASK_IMAGE_UNIFORMS_EXT 0x8E6A +#define GL_MAX_TASK_UNIFORM_COMPONENTS_EXT 0x8E6B +#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_EXT 0x8E6C +#define GL_MAX_TASK_ATOMIC_COUNTERS_EXT 0x8E6D +#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_EXT 0x8E6E +#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_EXT 0x8E6F +#define GL_MAX_TASK_WORK_GROUP_TOTAL_COUNT_EXT 0x9740 +#define GL_MAX_MESH_WORK_GROUP_TOTAL_COUNT_EXT 0x9741 +#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_EXT 0x9757 +#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_EXT 0x9759 +#define GL_MAX_TASK_PAYLOAD_SIZE_EXT 0x9742 +#define GL_MAX_TASK_SHARED_MEMORY_SIZE_EXT 0x9743 +#define GL_MAX_MESH_SHARED_MEMORY_SIZE_EXT 0x9744 +#define GL_MAX_TASK_PAYLOAD_AND_SHARED_MEMORY_SIZE_EXT 0x9745 +#define GL_MAX_MESH_PAYLOAD_AND_SHARED_MEMORY_SIZE_EXT 0x9746 +#define GL_MAX_MESH_OUTPUT_MEMORY_SIZE_EXT 0x9747 +#define GL_MAX_MESH_PAYLOAD_AND_OUTPUT_MEMORY_SIZE_EXT 0x9748 +#define GL_MAX_MESH_OUTPUT_VERTICES_EXT 0x9538 +#define GL_MAX_MESH_OUTPUT_PRIMITIVES_EXT 0x9756 +#define GL_MAX_MESH_OUTPUT_COMPONENTS_EXT 0x9749 +#define GL_MAX_MESH_OUTPUT_LAYERS_EXT 0x974A +#define GL_MAX_MESH_MULTIVIEW_VIEW_COUNT_EXT 0x9557 +#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_EXT 0x92DF +#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_EXT 0x9543 +#define GL_MAX_PREFERRED_TASK_WORK_GROUP_INVOCATIONS_EXT 0x974B +#define GL_MAX_PREFERRED_MESH_WORK_GROUP_INVOCATIONS_EXT 0x974C +#define GL_MESH_PREFERS_LOCAL_INVOCATION_VERTEX_OUTPUT_EXT 0x974D +#define GL_MESH_PREFERS_LOCAL_INVOCATION_PRIMITIVE_OUTPUT_EXT 0x974E +#define GL_MESH_PREFERS_COMPACT_VERTEX_OUTPUT_EXT 0x974F +#define GL_MESH_PREFERS_COMPACT_PRIMITIVE_OUTPUT_EXT 0x9750 +#define GL_MAX_TASK_WORK_GROUP_COUNT_EXT 0x9751 +#define GL_MAX_MESH_WORK_GROUP_COUNT_EXT 0x9752 +#define GL_MAX_MESH_WORK_GROUP_SIZE_EXT 0x9758 +#define GL_MAX_TASK_WORK_GROUP_SIZE_EXT 0x975A +#define GL_MESH_WORK_GROUP_SIZE_EXT 0x953E +#define GL_TASK_WORK_GROUP_SIZE_EXT 0x953F +#define GL_MESH_VERTICES_OUT_EXT 0x9579 +#define GL_MESH_PRIMITIVES_OUT_EXT 0x957A +#define GL_MESH_OUTPUT_TYPE_EXT 0x957B +#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_EXT 0x959C +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_EXT 0x959D +#define GL_REFERENCED_BY_MESH_SHADER_EXT 0x95A0 +#define GL_REFERENCED_BY_TASK_SHADER_EXT 0x95A1 +#define GL_TASK_SHADER_INVOCATIONS_EXT 0x9753 +#define GL_MESH_SHADER_INVOCATIONS_EXT 0x9754 +#define GL_MESH_PRIMITIVES_GENERATED_EXT 0x9755 +#define GL_MESH_SHADER_BIT_EXT 0x00000040 +#define GL_TASK_SHADER_BIT_EXT 0x00000080 +#define GL_MESH_SUBROUTINE_EXT 0x957C +#define GL_TASK_SUBROUTINE_EXT 0x957D +#define GL_MESH_SUBROUTINE_UNIFORM_EXT 0x957E +#define GL_TASK_SUBROUTINE_UNIFORM_EXT 0x957F +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_EXT 0x959E +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_EXT 0x959F + typedef void(APIENTRYP PFNGLDRAWMESHTASKSEXTPROC)(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + typedef void(APIENTRYP PFNGLDRAWMESHTASKSINDIRECTEXTPROC)(GLintptr indirect); + typedef void(APIENTRYP + PFNGLMULTIDRAWMESHTASKSINDIRECTEXTPROC)(GLintptr indirect, GLsizei drawcount, GLsizei stride); + typedef void(APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTEXTPROC)( + GLintptr indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawMeshTasksEXT(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + GLAPI void APIENTRY glDrawMeshTasksIndirectEXT(GLintptr indirect); + GLAPI void APIENTRY glMultiDrawMeshTasksIndirectEXT(GLintptr indirect, GLsizei drawcount, GLsizei stride); + GLAPI void APIENTRY + glMultiDrawMeshTasksIndirectCountEXT(GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_EXT_mesh_shader */ + +#ifndef GL_EXT_misc_attribute +#define GL_EXT_misc_attribute 1 +#endif /* GL_EXT_misc_attribute */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC)( + GLenum mode, + const GLint* first, + const GLsizei* count, + GLsizei primcount + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC)( + GLenum mode, + const GLsizei* count, + GLenum type, + const void* const* indices, + GLsizei primcount + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMultiDrawArraysEXT(GLenum mode, const GLint* first, const GLsizei* count, GLsizei primcount); + GLAPI void APIENTRY glMultiDrawElementsEXT( + GLenum mode, + const GLsizei* count, + GLenum type, + const void* const* indices, + GLsizei primcount + ); +#endif +#endif /* GL_EXT_multi_draw_arrays */ + +#ifndef GL_EXT_multisample +#define GL_EXT_multisample 1 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#define GL_SAMPLE_MASK_EXT 0x80A0 +#define GL_1PASS_EXT 0x80A1 +#define GL_2PASS_0_EXT 0x80A2 +#define GL_2PASS_1_EXT 0x80A3 +#define GL_4PASS_0_EXT 0x80A4 +#define GL_4PASS_1_EXT 0x80A5 +#define GL_4PASS_2_EXT 0x80A6 +#define GL_4PASS_3_EXT 0x80A7 +#define GL_SAMPLE_BUFFERS_EXT 0x80A8 +#define GL_SAMPLES_EXT 0x80A9 +#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA +#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB +#define GL_SAMPLE_PATTERN_EXT 0x80AC +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 + typedef void(APIENTRYP PFNGLSAMPLEMASKEXTPROC)(GLclampf value, GLboolean invert); + typedef void(APIENTRYP PFNGLSAMPLEPATTERNEXTPROC)(GLenum pattern); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glSampleMaskEXT(GLclampf value, GLboolean invert); + GLAPI void APIENTRY glSamplePatternEXT(GLenum pattern); +#endif +#endif /* GL_EXT_multisample */ + +#ifndef GL_EXT_multiview_tessellation_geometry_shader +#define GL_EXT_multiview_tessellation_geometry_shader 1 +#endif /* GL_EXT_multiview_tessellation_geometry_shader */ + +#ifndef GL_EXT_multiview_texture_multisample +#define GL_EXT_multiview_texture_multisample 1 +#endif /* GL_EXT_multiview_texture_multisample */ + +#ifndef GL_EXT_multiview_timer_query +#define GL_EXT_multiview_timer_query 1 +#endif /* GL_EXT_multiview_timer_query */ + +#ifndef GL_EXT_packed_depth_stencil +#define GL_EXT_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_EXT 0x84F9 +#define GL_UNSIGNED_INT_24_8_EXT 0x84FA +#define GL_DEPTH24_STENCIL8_EXT 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 +#endif /* GL_EXT_packed_depth_stencil */ + +#ifndef GL_EXT_packed_float +#define GL_EXT_packed_float 1 +#define GL_R11F_G11F_B10F_EXT 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B +#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C +#endif /* GL_EXT_packed_float */ + +#ifndef GL_EXT_packed_pixels +#define GL_EXT_packed_pixels 1 +#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 +#endif /* GL_EXT_packed_pixels */ + +#ifndef GL_EXT_paletted_texture +#define GL_EXT_paletted_texture 1 +#define GL_COLOR_INDEX1_EXT 0x80E2 +#define GL_COLOR_INDEX2_EXT 0x80E3 +#define GL_COLOR_INDEX4_EXT 0x80E4 +#define GL_COLOR_INDEX8_EXT 0x80E5 +#define GL_COLOR_INDEX12_EXT 0x80E6 +#define GL_COLOR_INDEX16_EXT 0x80E7 +#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED + typedef void(APIENTRYP PFNGLCOLORTABLEEXTPROC)( + GLenum target, + GLenum internalFormat, + GLsizei width, + GLenum format, + GLenum type, + const void* table + ); + typedef void(APIENTRYP PFNGLGETCOLORTABLEEXTPROC)(GLenum target, GLenum format, GLenum type, void* data); + typedef void(APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glColorTableEXT(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void* table); + GLAPI void APIENTRY glGetColorTableEXT(GLenum target, GLenum format, GLenum type, void* data); + GLAPI void APIENTRY glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat* params); +#endif +#endif /* GL_EXT_paletted_texture */ + +#ifndef GL_EXT_pixel_buffer_object +#define GL_EXT_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF +#endif /* GL_EXT_pixel_buffer_object */ + +#ifndef GL_EXT_pixel_transform +#define GL_EXT_pixel_transform 1 +#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 +#define GL_PIXEL_MAG_FILTER_EXT 0x8331 +#define GL_PIXEL_MIN_FILTER_EXT 0x8332 +#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 +#define GL_CUBIC_EXT 0x8334 +#define GL_AVERAGE_EXT 0x8335 +#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 +#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 +#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 + typedef void(APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)(GLenum target, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)(GLenum target, GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, GLfloat* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPixelTransformParameteriEXT(GLenum target, GLenum pname, GLint param); + GLAPI void APIENTRY glPixelTransformParameterfEXT(GLenum target, GLenum pname, GLfloat param); + GLAPI void APIENTRY glPixelTransformParameterivEXT(GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glPixelTransformParameterfvEXT(GLenum target, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glGetPixelTransformParameterivEXT(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetPixelTransformParameterfvEXT(GLenum target, GLenum pname, GLfloat* params); +#endif +#endif /* GL_EXT_pixel_transform */ + +#ifndef GL_EXT_pixel_transform_color_table +#define GL_EXT_pixel_transform_color_table 1 +#endif /* GL_EXT_pixel_transform_color_table */ + +#ifndef GL_EXT_point_parameters +#define GL_EXT_point_parameters 1 +#define GL_POINT_SIZE_MIN_EXT 0x8126 +#define GL_POINT_SIZE_MAX_EXT 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 +#define GL_DISTANCE_ATTENUATION_EXT 0x8129 + typedef void(APIENTRYP PFNGLPOINTPARAMETERFEXTPROC)(GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC)(GLenum pname, const GLfloat* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPointParameterfEXT(GLenum pname, GLfloat param); + GLAPI void APIENTRY glPointParameterfvEXT(GLenum pname, const GLfloat* params); +#endif +#endif /* GL_EXT_point_parameters */ + +#ifndef GL_EXT_polygon_offset +#define GL_EXT_polygon_offset 1 +#define GL_POLYGON_OFFSET_EXT 0x8037 +#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 +#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 + typedef void(APIENTRYP PFNGLPOLYGONOFFSETEXTPROC)(GLfloat factor, GLfloat bias); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPolygonOffsetEXT(GLfloat factor, GLfloat bias); +#endif +#endif /* GL_EXT_polygon_offset */ + +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B + typedef void(APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC)(GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPolygonOffsetClampEXT(GLfloat factor, GLfloat units, GLfloat clamp); +#endif +#endif /* GL_EXT_polygon_offset_clamp */ + +#ifndef GL_EXT_post_depth_coverage +#define GL_EXT_post_depth_coverage 1 +#endif /* GL_EXT_post_depth_coverage */ + +#ifndef GL_EXT_provoking_vertex +#define GL_EXT_provoking_vertex 1 +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_PROVOKING_VERTEX_EXT 0x8E4F + typedef void(APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC)(GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glProvokingVertexEXT(GLenum mode); +#endif +#endif /* GL_EXT_provoking_vertex */ + +#ifndef GL_EXT_raster_multisample +#define GL_EXT_raster_multisample 1 +#define GL_RASTER_MULTISAMPLE_EXT 0x9327 +#define GL_RASTER_SAMPLES_EXT 0x9328 +#define GL_MAX_RASTER_SAMPLES_EXT 0x9329 +#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A +#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B +#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C + typedef void(APIENTRYP PFNGLRASTERSAMPLESEXTPROC)(GLuint samples, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glRasterSamplesEXT(GLuint samples, GLboolean fixedsamplelocations); +#endif +#endif /* GL_EXT_raster_multisample */ + +#ifndef GL_EXT_rescale_normal +#define GL_EXT_rescale_normal 1 +#define GL_RESCALE_NORMAL_EXT 0x803A +#endif /* GL_EXT_rescale_normal */ + +#ifndef GL_EXT_secondary_color +#define GL_EXT_secondary_color 1 +#define GL_COLOR_SUM_EXT 0x8458 +#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D +#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC)(GLbyte red, GLbyte green, GLbyte blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC)(const GLbyte* v); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC)(GLdouble red, GLdouble green, GLdouble blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC)(const GLdouble* v); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC)(GLfloat red, GLfloat green, GLfloat blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC)(const GLfloat* v); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC)(GLint red, GLint green, GLint blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC)(const GLint* v); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC)(GLshort red, GLshort green, GLshort blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC)(const GLshort* v); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC)(GLubyte red, GLubyte green, GLubyte blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC)(const GLubyte* v); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC)(GLuint red, GLuint green, GLuint blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC)(const GLuint* v); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC)(GLushort red, GLushort green, GLushort blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC)(const GLushort* v); + typedef void(APIENTRYP + PFNGLSECONDARYCOLORPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, const void* pointer); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glSecondaryColor3bEXT(GLbyte red, GLbyte green, GLbyte blue); + GLAPI void APIENTRY glSecondaryColor3bvEXT(const GLbyte* v); + GLAPI void APIENTRY glSecondaryColor3dEXT(GLdouble red, GLdouble green, GLdouble blue); + GLAPI void APIENTRY glSecondaryColor3dvEXT(const GLdouble* v); + GLAPI void APIENTRY glSecondaryColor3fEXT(GLfloat red, GLfloat green, GLfloat blue); + GLAPI void APIENTRY glSecondaryColor3fvEXT(const GLfloat* v); + GLAPI void APIENTRY glSecondaryColor3iEXT(GLint red, GLint green, GLint blue); + GLAPI void APIENTRY glSecondaryColor3ivEXT(const GLint* v); + GLAPI void APIENTRY glSecondaryColor3sEXT(GLshort red, GLshort green, GLshort blue); + GLAPI void APIENTRY glSecondaryColor3svEXT(const GLshort* v); + GLAPI void APIENTRY glSecondaryColor3ubEXT(GLubyte red, GLubyte green, GLubyte blue); + GLAPI void APIENTRY glSecondaryColor3ubvEXT(const GLubyte* v); + GLAPI void APIENTRY glSecondaryColor3uiEXT(GLuint red, GLuint green, GLuint blue); + GLAPI void APIENTRY glSecondaryColor3uivEXT(const GLuint* v); + GLAPI void APIENTRY glSecondaryColor3usEXT(GLushort red, GLushort green, GLushort blue); + GLAPI void APIENTRY glSecondaryColor3usvEXT(const GLushort* v); + GLAPI void APIENTRY glSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, const void* pointer); +#endif +#endif /* GL_EXT_secondary_color */ + +#ifndef GL_EXT_semaphore +#define GL_EXT_semaphore 1 +#define GL_LAYOUT_GENERAL_EXT 0x958D +#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E +#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F +#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590 +#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591 +#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592 +#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593 +#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530 +#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531 + typedef void(APIENTRYP PFNGLGENSEMAPHORESEXTPROC)(GLsizei n, GLuint* semaphores); + typedef void(APIENTRYP PFNGLDELETESEMAPHORESEXTPROC)(GLsizei n, const GLuint* semaphores); + typedef GLboolean(APIENTRYP PFNGLISSEMAPHOREEXTPROC)(GLuint semaphore); + typedef void(APIENTRYP PFNGLSEMAPHOREPARAMETERUI64VEXTPROC)(GLuint semaphore, GLenum pname, const GLuint64* params); + typedef void(APIENTRYP PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC)(GLuint semaphore, GLenum pname, GLuint64* params); + typedef void(APIENTRYP PFNGLWAITSEMAPHOREEXTPROC)( + GLuint semaphore, + GLuint numBufferBarriers, + const GLuint* buffers, + GLuint numTextureBarriers, + const GLuint* textures, + const GLenum* srcLayouts + ); + typedef void(APIENTRYP PFNGLSIGNALSEMAPHOREEXTPROC)( + GLuint semaphore, + GLuint numBufferBarriers, + const GLuint* buffers, + GLuint numTextureBarriers, + const GLuint* textures, + const GLenum* dstLayouts + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGenSemaphoresEXT(GLsizei n, GLuint* semaphores); + GLAPI void APIENTRY glDeleteSemaphoresEXT(GLsizei n, const GLuint* semaphores); + GLAPI GLboolean APIENTRY glIsSemaphoreEXT(GLuint semaphore); + GLAPI void APIENTRY glSemaphoreParameterui64vEXT(GLuint semaphore, GLenum pname, const GLuint64* params); + GLAPI void APIENTRY glGetSemaphoreParameterui64vEXT(GLuint semaphore, GLenum pname, GLuint64* params); + GLAPI void APIENTRY glWaitSemaphoreEXT( + GLuint semaphore, + GLuint numBufferBarriers, + const GLuint* buffers, + GLuint numTextureBarriers, + const GLuint* textures, + const GLenum* srcLayouts + ); + GLAPI void APIENTRY glSignalSemaphoreEXT( + GLuint semaphore, + GLuint numBufferBarriers, + const GLuint* buffers, + GLuint numTextureBarriers, + const GLuint* textures, + const GLenum* dstLayouts + ); +#endif +#endif /* GL_EXT_semaphore */ + +#ifndef GL_EXT_semaphore_fd +#define GL_EXT_semaphore_fd 1 + typedef void(APIENTRYP PFNGLIMPORTSEMAPHOREFDEXTPROC)(GLuint semaphore, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glImportSemaphoreFdEXT(GLuint semaphore, GLenum handleType, GLint fd); +#endif +#endif /* GL_EXT_semaphore_fd */ + +#ifndef GL_EXT_semaphore_win32 +#define GL_EXT_semaphore_win32 1 +#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594 +#define GL_D3D12_FENCE_VALUE_EXT 0x9595 + typedef void(APIENTRYP PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC)(GLuint semaphore, GLenum handleType, void* handle); + typedef void(APIENTRYP PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC)(GLuint semaphore, GLenum handleType, const void* name); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glImportSemaphoreWin32HandleEXT(GLuint semaphore, GLenum handleType, void* handle); + GLAPI void APIENTRY glImportSemaphoreWin32NameEXT(GLuint semaphore, GLenum handleType, const void* name); +#endif +#endif /* GL_EXT_semaphore_win32 */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#define GL_ACTIVE_PROGRAM_EXT 0x8B8D + typedef void(APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC)(GLenum type, GLuint program); + typedef void(APIENTRYP PFNGLACTIVEPROGRAMEXTPROC)(GLuint program); + typedef GLuint(APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC)(GLenum type, const GLchar* string); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glUseShaderProgramEXT(GLenum type, GLuint program); + GLAPI void APIENTRY glActiveProgramEXT(GLuint program); + GLAPI GLuint APIENTRY glCreateShaderProgramEXT(GLenum type, const GLchar* string); +#endif +#endif /* GL_EXT_separate_shader_objects */ + +#ifndef GL_EXT_separate_specular_color +#define GL_EXT_separate_specular_color 1 +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 +#define GL_SINGLE_COLOR_EXT 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA +#endif /* GL_EXT_separate_specular_color */ + +#ifndef GL_EXT_shader_framebuffer_fetch +#define GL_EXT_shader_framebuffer_fetch 1 +#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 +#endif /* GL_EXT_shader_framebuffer_fetch */ + +#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent +#define GL_EXT_shader_framebuffer_fetch_non_coherent 1 + typedef void(APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFramebufferFetchBarrierEXT(void); +#endif +#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */ + +#ifndef GL_EXT_shader_image_load_formatted +#define GL_EXT_shader_image_load_formatted 1 +#endif /* GL_EXT_shader_image_load_formatted */ + +#ifndef GL_EXT_shader_image_load_store +#define GL_EXT_shader_image_load_store 1 +#define GL_MAX_IMAGE_UNITS_EXT 0x8F38 +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 +#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A +#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B +#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C +#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D +#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E +#define GL_IMAGE_1D_EXT 0x904C +#define GL_IMAGE_2D_EXT 0x904D +#define GL_IMAGE_3D_EXT 0x904E +#define GL_IMAGE_2D_RECT_EXT 0x904F +#define GL_IMAGE_CUBE_EXT 0x9050 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_IMAGE_1D_ARRAY_EXT 0x9052 +#define GL_IMAGE_2D_ARRAY_EXT 0x9053 +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 +#define GL_INT_IMAGE_1D_EXT 0x9057 +#define GL_INT_IMAGE_2D_EXT 0x9058 +#define GL_INT_IMAGE_3D_EXT 0x9059 +#define GL_INT_IMAGE_2D_RECT_EXT 0x905A +#define GL_INT_IMAGE_CUBE_EXT 0x905B +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D +#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 +#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 +#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C +#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D +#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001 +#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002 +#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004 +#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020 +#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040 +#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080 +#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100 +#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200 +#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800 +#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000 +#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF + typedef void(APIENTRYP PFNGLBINDIMAGETEXTUREEXTPROC)( + GLuint index, + GLuint texture, + GLint level, + GLboolean layered, + GLint layer, + GLenum access, + GLint format + ); + typedef void(APIENTRYP PFNGLMEMORYBARRIEREXTPROC)(GLbitfield barriers); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBindImageTextureEXT( + GLuint index, + GLuint texture, + GLint level, + GLboolean layered, + GLint layer, + GLenum access, + GLint format + ); + GLAPI void APIENTRY glMemoryBarrierEXT(GLbitfield barriers); +#endif +#endif /* GL_EXT_shader_image_load_store */ + +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 +#endif /* GL_EXT_shader_integer_mix */ + +#ifndef GL_EXT_shader_samples_identical +#define GL_EXT_shader_samples_identical 1 +#endif /* GL_EXT_shader_samples_identical */ + +#ifndef GL_EXT_shadow_funcs +#define GL_EXT_shadow_funcs 1 +#endif /* GL_EXT_shadow_funcs */ + +#ifndef GL_EXT_shared_texture_palette +#define GL_EXT_shared_texture_palette 1 +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB +#endif /* GL_EXT_shared_texture_palette */ + +#ifndef GL_EXT_sparse_texture2 +#define GL_EXT_sparse_texture2 1 +#endif /* GL_EXT_sparse_texture2 */ + +#ifndef GL_EXT_stencil_clear_tag +#define GL_EXT_stencil_clear_tag 1 +#define GL_STENCIL_TAG_BITS_EXT 0x88F2 +#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 + typedef void(APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC)(GLsizei stencilTagBits, GLuint stencilClearTag); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glStencilClearTagEXT(GLsizei stencilTagBits, GLuint stencilClearTag); +#endif +#endif /* GL_EXT_stencil_clear_tag */ + +#ifndef GL_EXT_stencil_two_side +#define GL_EXT_stencil_two_side 1 +#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 +#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 + typedef void(APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC)(GLenum face); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glActiveStencilFaceEXT(GLenum face); +#endif +#endif /* GL_EXT_stencil_two_side */ + +#ifndef GL_EXT_stencil_wrap +#define GL_EXT_stencil_wrap 1 +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_DECR_WRAP_EXT 0x8508 +#endif /* GL_EXT_stencil_wrap */ + +#ifndef GL_EXT_subtexture +#define GL_EXT_subtexture 1 + typedef void(APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTexSubImage1DEXT( + GLenum target, + GLint level, + GLint xoffset, + GLsizei width, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTexSubImage2DEXT( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + const void* pixels + ); +#endif +#endif /* GL_EXT_subtexture */ + +#ifndef GL_EXT_texture +#define GL_EXT_texture 1 +#define GL_ALPHA4_EXT 0x803B +#define GL_ALPHA8_EXT 0x803C +#define GL_ALPHA12_EXT 0x803D +#define GL_ALPHA16_EXT 0x803E +#define GL_LUMINANCE4_EXT 0x803F +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE12_EXT 0x8041 +#define GL_LUMINANCE16_EXT 0x8042 +#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 +#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 +#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 +#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 +#define GL_INTENSITY_EXT 0x8049 +#define GL_INTENSITY4_EXT 0x804A +#define GL_INTENSITY8_EXT 0x804B +#define GL_INTENSITY12_EXT 0x804C +#define GL_INTENSITY16_EXT 0x804D +#define GL_RGB2_EXT 0x804E +#define GL_RGB4_EXT 0x804F +#define GL_RGB5_EXT 0x8050 +#define GL_RGB8_EXT 0x8051 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB12_EXT 0x8053 +#define GL_RGB16_EXT 0x8054 +#define GL_RGBA2_EXT 0x8055 +#define GL_RGBA4_EXT 0x8056 +#define GL_RGB5_A1_EXT 0x8057 +#define GL_RGBA8_EXT 0x8058 +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGBA12_EXT 0x805A +#define GL_RGBA16_EXT 0x805B +#define GL_TEXTURE_RED_SIZE_EXT 0x805C +#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D +#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E +#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 +#define GL_REPLACE_EXT 0x8062 +#define GL_PROXY_TEXTURE_1D_EXT 0x8063 +#define GL_PROXY_TEXTURE_2D_EXT 0x8064 +#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 +#endif /* GL_EXT_texture */ + +#ifndef GL_EXT_texture3D +#define GL_EXT_texture3D 1 +#define GL_PACK_SKIP_IMAGES_EXT 0x806B +#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C +#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D +#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E +#define GL_TEXTURE_3D_EXT 0x806F +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 +#define GL_TEXTURE_DEPTH_EXT 0x8071 +#define GL_TEXTURE_WRAP_R_EXT 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 + typedef void(APIENTRYP PFNGLTEXIMAGE3DEXTPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTexImage3DEXT( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTexSubImage3DEXT( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLenum format, + GLenum type, + const void* pixels + ); +#endif +#endif /* GL_EXT_texture3D */ + +#ifndef GL_EXT_texture_array +#define GL_EXT_texture_array 1 +#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 +#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)( + GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint layer + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glFramebufferTextureLayerEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +#endif +#endif /* GL_EXT_texture_array */ + +#ifndef GL_EXT_texture_buffer_object +#define GL_EXT_texture_buffer_object 1 +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D +#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E + typedef void(APIENTRYP PFNGLTEXBUFFEREXTPROC)(GLenum target, GLenum internalformat, GLuint buffer); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTexBufferEXT(GLenum target, GLenum internalformat, GLuint buffer); +#endif +#endif /* GL_EXT_texture_buffer_object */ + +#ifndef GL_EXT_texture_compression_latc +#define GL_EXT_texture_compression_latc 1 +#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 +#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 +#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 +#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 +#endif /* GL_EXT_texture_compression_latc */ + +#ifndef GL_EXT_texture_compression_rgtc +#define GL_EXT_texture_compression_rgtc 1 +#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC +#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD +#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE +#endif /* GL_EXT_texture_compression_rgtc */ + +#ifndef GL_EXT_texture_compression_s3tc +#define GL_EXT_texture_compression_s3tc 1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif /* GL_EXT_texture_compression_s3tc */ + +#ifndef GL_EXT_texture_cube_map +#define GL_EXT_texture_cube_map 1 +#define GL_NORMAL_MAP_EXT 0x8511 +#define GL_REFLECTION_MAP_EXT 0x8512 +#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C +#endif /* GL_EXT_texture_cube_map */ + +#ifndef GL_EXT_texture_env_add +#define GL_EXT_texture_env_add 1 +#endif /* GL_EXT_texture_env_add */ + +#ifndef GL_EXT_texture_env_combine +#define GL_EXT_texture_env_combine 1 +#define GL_COMBINE_EXT 0x8570 +#define GL_COMBINE_RGB_EXT 0x8571 +#define GL_COMBINE_ALPHA_EXT 0x8572 +#define GL_RGB_SCALE_EXT 0x8573 +#define GL_ADD_SIGNED_EXT 0x8574 +#define GL_INTERPOLATE_EXT 0x8575 +#define GL_CONSTANT_EXT 0x8576 +#define GL_PRIMARY_COLOR_EXT 0x8577 +#define GL_PREVIOUS_EXT 0x8578 +#define GL_SOURCE0_RGB_EXT 0x8580 +#define GL_SOURCE1_RGB_EXT 0x8581 +#define GL_SOURCE2_RGB_EXT 0x8582 +#define GL_SOURCE0_ALPHA_EXT 0x8588 +#define GL_SOURCE1_ALPHA_EXT 0x8589 +#define GL_SOURCE2_ALPHA_EXT 0x858A +#define GL_OPERAND0_RGB_EXT 0x8590 +#define GL_OPERAND1_RGB_EXT 0x8591 +#define GL_OPERAND2_RGB_EXT 0x8592 +#define GL_OPERAND0_ALPHA_EXT 0x8598 +#define GL_OPERAND1_ALPHA_EXT 0x8599 +#define GL_OPERAND2_ALPHA_EXT 0x859A +#endif /* GL_EXT_texture_env_combine */ + +#ifndef GL_EXT_texture_env_dot3 +#define GL_EXT_texture_env_dot3 1 +#define GL_DOT3_RGB_EXT 0x8740 +#define GL_DOT3_RGBA_EXT 0x8741 +#endif /* GL_EXT_texture_env_dot3 */ + +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif /* GL_EXT_texture_filter_anisotropic */ + +#ifndef GL_EXT_texture_filter_minmax +#define GL_EXT_texture_filter_minmax 1 +#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366 +#define GL_WEIGHTED_AVERAGE_EXT 0x9367 +#endif /* GL_EXT_texture_filter_minmax */ + +#ifndef GL_EXT_texture_integer +#define GL_EXT_texture_integer 1 +#define GL_RGBA32UI_EXT 0x8D70 +#define GL_RGB32UI_EXT 0x8D71 +#define GL_ALPHA32UI_EXT 0x8D72 +#define GL_INTENSITY32UI_EXT 0x8D73 +#define GL_LUMINANCE32UI_EXT 0x8D74 +#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 +#define GL_RGBA16UI_EXT 0x8D76 +#define GL_RGB16UI_EXT 0x8D77 +#define GL_ALPHA16UI_EXT 0x8D78 +#define GL_INTENSITY16UI_EXT 0x8D79 +#define GL_LUMINANCE16UI_EXT 0x8D7A +#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B +#define GL_RGBA8UI_EXT 0x8D7C +#define GL_RGB8UI_EXT 0x8D7D +#define GL_ALPHA8UI_EXT 0x8D7E +#define GL_INTENSITY8UI_EXT 0x8D7F +#define GL_LUMINANCE8UI_EXT 0x8D80 +#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 +#define GL_RGBA32I_EXT 0x8D82 +#define GL_RGB32I_EXT 0x8D83 +#define GL_ALPHA32I_EXT 0x8D84 +#define GL_INTENSITY32I_EXT 0x8D85 +#define GL_LUMINANCE32I_EXT 0x8D86 +#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 +#define GL_RGBA16I_EXT 0x8D88 +#define GL_RGB16I_EXT 0x8D89 +#define GL_ALPHA16I_EXT 0x8D8A +#define GL_INTENSITY16I_EXT 0x8D8B +#define GL_LUMINANCE16I_EXT 0x8D8C +#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D +#define GL_RGBA8I_EXT 0x8D8E +#define GL_RGB8I_EXT 0x8D8F +#define GL_ALPHA8I_EXT 0x8D90 +#define GL_INTENSITY8I_EXT 0x8D91 +#define GL_LUMINANCE8I_EXT 0x8D92 +#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 +#define GL_RED_INTEGER_EXT 0x8D94 +#define GL_GREEN_INTEGER_EXT 0x8D95 +#define GL_BLUE_INTEGER_EXT 0x8D96 +#define GL_ALPHA_INTEGER_EXT 0x8D97 +#define GL_RGB_INTEGER_EXT 0x8D98 +#define GL_RGBA_INTEGER_EXT 0x8D99 +#define GL_BGR_INTEGER_EXT 0x8D9A +#define GL_BGRA_INTEGER_EXT 0x8D9B +#define GL_LUMINANCE_INTEGER_EXT 0x8D9C +#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D +#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E + typedef void(APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, const GLuint* params); + typedef void(APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, GLuint* params); + typedef void(APIENTRYP PFNGLCLEARCOLORIIEXTPROC)(GLint red, GLint green, GLint blue, GLint alpha); + typedef void(APIENTRYP PFNGLCLEARCOLORIUIEXTPROC)(GLuint red, GLuint green, GLuint blue, GLuint alpha); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTexParameterIivEXT(GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glTexParameterIuivEXT(GLenum target, GLenum pname, const GLuint* params); + GLAPI void APIENTRY glGetTexParameterIivEXT(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetTexParameterIuivEXT(GLenum target, GLenum pname, GLuint* params); + GLAPI void APIENTRY glClearColorIiEXT(GLint red, GLint green, GLint blue, GLint alpha); + GLAPI void APIENTRY glClearColorIuiEXT(GLuint red, GLuint green, GLuint blue, GLuint alpha); +#endif +#endif /* GL_EXT_texture_integer */ + +#ifndef GL_EXT_texture_lod_bias +#define GL_EXT_texture_lod_bias 1 +#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD +#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 +#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 +#endif /* GL_EXT_texture_lod_bias */ + +#ifndef GL_EXT_texture_mirror_clamp +#define GL_EXT_texture_mirror_clamp 1 +#define GL_MIRROR_CLAMP_EXT 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 +#endif /* GL_EXT_texture_mirror_clamp */ + +#ifndef GL_EXT_texture_object +#define GL_EXT_texture_object 1 +#define GL_TEXTURE_PRIORITY_EXT 0x8066 +#define GL_TEXTURE_RESIDENT_EXT 0x8067 +#define GL_TEXTURE_1D_BINDING_EXT 0x8068 +#define GL_TEXTURE_2D_BINDING_EXT 0x8069 +#define GL_TEXTURE_3D_BINDING_EXT 0x806A + typedef GLboolean(APIENTRYP + PFNGLARETEXTURESRESIDENTEXTPROC)(GLsizei n, const GLuint* textures, GLboolean* residences); + typedef void(APIENTRYP PFNGLBINDTEXTUREEXTPROC)(GLenum target, GLuint texture); + typedef void(APIENTRYP PFNGLDELETETEXTURESEXTPROC)(GLsizei n, const GLuint* textures); + typedef void(APIENTRYP PFNGLGENTEXTURESEXTPROC)(GLsizei n, GLuint* textures); + typedef GLboolean(APIENTRYP PFNGLISTEXTUREEXTPROC)(GLuint texture); + typedef void(APIENTRYP + PFNGLPRIORITIZETEXTURESEXTPROC)(GLsizei n, const GLuint* textures, const GLclampf* priorities); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLboolean APIENTRY glAreTexturesResidentEXT(GLsizei n, const GLuint* textures, GLboolean* residences); + GLAPI void APIENTRY glBindTextureEXT(GLenum target, GLuint texture); + GLAPI void APIENTRY glDeleteTexturesEXT(GLsizei n, const GLuint* textures); + GLAPI void APIENTRY glGenTexturesEXT(GLsizei n, GLuint* textures); + GLAPI GLboolean APIENTRY glIsTextureEXT(GLuint texture); + GLAPI void APIENTRY glPrioritizeTexturesEXT(GLsizei n, const GLuint* textures, const GLclampf* priorities); +#endif +#endif /* GL_EXT_texture_object */ + +#ifndef GL_EXT_texture_perturb_normal +#define GL_EXT_texture_perturb_normal 1 +#define GL_PERTURB_EXT 0x85AE +#define GL_TEXTURE_NORMAL_EXT 0x85AF + typedef void(APIENTRYP PFNGLTEXTURENORMALEXTPROC)(GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTextureNormalEXT(GLenum mode); +#endif +#endif /* GL_EXT_texture_perturb_normal */ + +#ifndef GL_EXT_texture_sRGB +#define GL_EXT_texture_sRGB 1 +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB8_EXT 0x8C41 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 +#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 +#define GL_SLUMINANCE_EXT 0x8C46 +#define GL_SLUMINANCE8_EXT 0x8C47 +#define GL_COMPRESSED_SRGB_EXT 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 +#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +#endif /* GL_EXT_texture_sRGB */ + +#ifndef GL_EXT_texture_sRGB_R8 +#define GL_EXT_texture_sRGB_R8 1 +#define GL_SR8_EXT 0x8FBD +#endif /* GL_EXT_texture_sRGB_R8 */ + +#ifndef GL_EXT_texture_sRGB_RG8 +#define GL_EXT_texture_sRGB_RG8 1 +#define GL_SRG8_EXT 0x8FBE +#endif /* GL_EXT_texture_sRGB_RG8 */ + +#ifndef GL_EXT_texture_sRGB_decode +#define GL_EXT_texture_sRGB_decode 1 +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_DECODE_EXT 0x8A49 +#define GL_SKIP_DECODE_EXT 0x8A4A +#endif /* GL_EXT_texture_sRGB_decode */ + +#ifndef GL_EXT_texture_shadow_lod +#define GL_EXT_texture_shadow_lod 1 +#endif /* GL_EXT_texture_shadow_lod */ + +#ifndef GL_EXT_texture_shared_exponent +#define GL_EXT_texture_shared_exponent 1 +#define GL_RGB9_E5_EXT 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E +#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F +#endif /* GL_EXT_texture_shared_exponent */ + +#ifndef GL_EXT_texture_snorm +#define GL_EXT_texture_snorm 1 +#define GL_ALPHA_SNORM 0x9010 +#define GL_LUMINANCE_SNORM 0x9011 +#define GL_LUMINANCE_ALPHA_SNORM 0x9012 +#define GL_INTENSITY_SNORM 0x9013 +#define GL_ALPHA8_SNORM 0x9014 +#define GL_LUMINANCE8_SNORM 0x9015 +#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 +#define GL_INTENSITY8_SNORM 0x9017 +#define GL_ALPHA16_SNORM 0x9018 +#define GL_LUMINANCE16_SNORM 0x9019 +#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A +#define GL_INTENSITY16_SNORM 0x901B +#define GL_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#endif /* GL_EXT_texture_snorm */ + +#ifndef GL_EXT_texture_storage +#define GL_EXT_texture_storage 1 +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGB32F_EXT 0x8815 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_BGRA8_EXT 0x93A1 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +#define GL_R16F_EXT 0x822D +#define GL_RG16F_EXT 0x822F + typedef void(APIENTRYP + PFNGLTEXSTORAGE1DEXTPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + typedef void(APIENTRYP PFNGLTEXSTORAGE2DEXTPROC)( + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height + ); + typedef void(APIENTRYP PFNGLTEXSTORAGE3DEXTPROC)( + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTexStorage1DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); + GLAPI void APIENTRY + glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); + GLAPI void APIENTRY glTexStorage3DEXT( + GLenum target, + GLsizei levels, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth + ); +#endif +#endif /* GL_EXT_texture_storage */ + +#ifndef GL_EXT_texture_swizzle +#define GL_EXT_texture_swizzle 1 +#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 +#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 +#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 +#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 +#endif /* GL_EXT_texture_swizzle */ + +#ifndef GL_EXT_timer_query +#define GL_EXT_timer_query 1 +#define GL_TIME_ELAPSED_EXT 0x88BF + typedef void(APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC)(GLuint id, GLenum pname, GLint64* params); + typedef void(APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC)(GLuint id, GLenum pname, GLuint64* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64* params); + GLAPI void APIENTRY glGetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64* params); +#endif +#endif /* GL_EXT_timer_query */ + +#ifndef GL_EXT_transform_feedback +#define GL_EXT_transform_feedback 1 +#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F +#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C +#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 +#define GL_RASTERIZER_DISCARD_EXT 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 + typedef void(APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)(GLenum primitiveMode); + typedef void(APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC)(void); + typedef void(APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC)( + GLenum target, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); + typedef void(APIENTRYP PFNGLBINDBUFFERBASEEXTPROC)(GLenum target, GLuint index, GLuint buffer); + typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)( + GLuint program, + GLsizei count, + const GLchar* const* varyings, + GLenum bufferMode + ); + typedef void(APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLsizei* size, + GLenum* type, + GLchar* name + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBeginTransformFeedbackEXT(GLenum primitiveMode); + GLAPI void APIENTRY glEndTransformFeedbackEXT(void); + GLAPI void APIENTRY + glBindBufferRangeEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + GLAPI void APIENTRY glBindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset); + GLAPI void APIENTRY glBindBufferBaseEXT(GLenum target, GLuint index, GLuint buffer); + GLAPI void APIENTRY + glTransformFeedbackVaryingsEXT(GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode); + GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLsizei* size, + GLenum* type, + GLchar* name + ); +#endif +#endif /* GL_EXT_transform_feedback */ + +#ifndef GL_EXT_vertex_array +#define GL_EXT_vertex_array 1 +#define GL_VERTEX_ARRAY_EXT 0x8074 +#define GL_NORMAL_ARRAY_EXT 0x8075 +#define GL_COLOR_ARRAY_EXT 0x8076 +#define GL_INDEX_ARRAY_EXT 0x8077 +#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 +#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 +#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A +#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B +#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C +#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D +#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E +#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F +#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 +#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 +#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 +#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 +#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 +#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 +#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 +#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D +#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E +#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F +#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 +#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 + typedef void(APIENTRYP PFNGLARRAYELEMENTEXTPROC)(GLint i); + typedef void(APIENTRYP PFNGLCOLORPOINTEREXTPROC)( + GLint size, + GLenum type, + GLsizei stride, + GLsizei count, + const void* pointer + ); + typedef void(APIENTRYP PFNGLDRAWARRAYSEXTPROC)(GLenum mode, GLint first, GLsizei count); + typedef void(APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC)(GLsizei stride, GLsizei count, const GLboolean* pointer); + typedef void(APIENTRYP PFNGLGETPOINTERVEXTPROC)(GLenum pname, void** params); + typedef void(APIENTRYP PFNGLINDEXPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, const void* pointer); + typedef void(APIENTRYP PFNGLNORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, const void* pointer); + typedef void(APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC)( + GLint size, + GLenum type, + GLsizei stride, + GLsizei count, + const void* pointer + ); + typedef void(APIENTRYP PFNGLVERTEXPOINTEREXTPROC)( + GLint size, + GLenum type, + GLsizei stride, + GLsizei count, + const void* pointer + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glArrayElementEXT(GLint i); + GLAPI void APIENTRY glColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); + GLAPI void APIENTRY glDrawArraysEXT(GLenum mode, GLint first, GLsizei count); + GLAPI void APIENTRY glEdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean* pointer); + GLAPI void APIENTRY glGetPointervEXT(GLenum pname, void** params); + GLAPI void APIENTRY glIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, const void* pointer); + GLAPI void APIENTRY glNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, const void* pointer); + GLAPI void APIENTRY + glTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); + GLAPI void APIENTRY glVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const void* pointer); +#endif +#endif /* GL_EXT_vertex_array */ + +#ifndef GL_EXT_vertex_array_bgra +#define GL_EXT_vertex_array_bgra 1 +#endif /* GL_EXT_vertex_array_bgra */ + +#ifndef GL_EXT_vertex_attrib_64bit +#define GL_EXT_vertex_attrib_64bit 1 +#define GL_DOUBLE_VEC2_EXT 0x8FFC +#define GL_DOUBLE_VEC3_EXT 0x8FFD +#define GL_DOUBLE_VEC4_EXT 0x8FFE +#define GL_DOUBLE_MAT2_EXT 0x8F46 +#define GL_DOUBLE_MAT3_EXT 0x8F47 +#define GL_DOUBLE_MAT4_EXT 0x8F48 +#define GL_DOUBLE_MAT2x3_EXT 0x8F49 +#define GL_DOUBLE_MAT2x4_EXT 0x8F4A +#define GL_DOUBLE_MAT3x2_EXT 0x8F4B +#define GL_DOUBLE_MAT3x4_EXT 0x8F4C +#define GL_DOUBLE_MAT4x2_EXT 0x8F4D +#define GL_DOUBLE_MAT4x3_EXT 0x8F4E + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1DEXTPROC)(GLuint index, GLdouble x); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2DEXTPROC)(GLuint index, GLdouble x, GLdouble y); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3DEXTPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4DEXTPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1DVEXTPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2DVEXTPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3DVEXTPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4DVEXTPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBLPOINTEREXTPROC)( + GLuint index, + GLint size, + GLenum type, + GLsizei stride, + const void* pointer + ); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBLDVEXTPROC)(GLuint index, GLenum pname, GLdouble* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glVertexAttribL1dEXT(GLuint index, GLdouble x); + GLAPI void APIENTRY glVertexAttribL2dEXT(GLuint index, GLdouble x, GLdouble y); + GLAPI void APIENTRY glVertexAttribL3dEXT(GLuint index, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glVertexAttribL4dEXT(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glVertexAttribL1dvEXT(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttribL2dvEXT(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttribL3dvEXT(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttribL4dvEXT(GLuint index, const GLdouble* v); + GLAPI void APIENTRY + glVertexAttribLPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer); + GLAPI void APIENTRY glGetVertexAttribLdvEXT(GLuint index, GLenum pname, GLdouble* params); +#endif +#endif /* GL_EXT_vertex_attrib_64bit */ + +#ifndef GL_EXT_vertex_shader +#define GL_EXT_vertex_shader 1 +#define GL_VERTEX_SHADER_EXT 0x8780 +#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 +#define GL_OP_INDEX_EXT 0x8782 +#define GL_OP_NEGATE_EXT 0x8783 +#define GL_OP_DOT3_EXT 0x8784 +#define GL_OP_DOT4_EXT 0x8785 +#define GL_OP_MUL_EXT 0x8786 +#define GL_OP_ADD_EXT 0x8787 +#define GL_OP_MADD_EXT 0x8788 +#define GL_OP_FRAC_EXT 0x8789 +#define GL_OP_MAX_EXT 0x878A +#define GL_OP_MIN_EXT 0x878B +#define GL_OP_SET_GE_EXT 0x878C +#define GL_OP_SET_LT_EXT 0x878D +#define GL_OP_CLAMP_EXT 0x878E +#define GL_OP_FLOOR_EXT 0x878F +#define GL_OP_ROUND_EXT 0x8790 +#define GL_OP_EXP_BASE_2_EXT 0x8791 +#define GL_OP_LOG_BASE_2_EXT 0x8792 +#define GL_OP_POWER_EXT 0x8793 +#define GL_OP_RECIP_EXT 0x8794 +#define GL_OP_RECIP_SQRT_EXT 0x8795 +#define GL_OP_SUB_EXT 0x8796 +#define GL_OP_CROSS_PRODUCT_EXT 0x8797 +#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 +#define GL_OP_MOV_EXT 0x8799 +#define GL_OUTPUT_VERTEX_EXT 0x879A +#define GL_OUTPUT_COLOR0_EXT 0x879B +#define GL_OUTPUT_COLOR1_EXT 0x879C +#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D +#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E +#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F +#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 +#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 +#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 +#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 +#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 +#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 +#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 +#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 +#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 +#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 +#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA +#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB +#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC +#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD +#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE +#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF +#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 +#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 +#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 +#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 +#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 +#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 +#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 +#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 +#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 +#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 +#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA +#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB +#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC +#define GL_OUTPUT_FOG_EXT 0x87BD +#define GL_SCALAR_EXT 0x87BE +#define GL_VECTOR_EXT 0x87BF +#define GL_MATRIX_EXT 0x87C0 +#define GL_VARIANT_EXT 0x87C1 +#define GL_INVARIANT_EXT 0x87C2 +#define GL_LOCAL_CONSTANT_EXT 0x87C3 +#define GL_LOCAL_EXT 0x87C4 +#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 +#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 +#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 +#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 +#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE +#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF +#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 +#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 +#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 +#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 +#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 +#define GL_X_EXT 0x87D5 +#define GL_Y_EXT 0x87D6 +#define GL_Z_EXT 0x87D7 +#define GL_W_EXT 0x87D8 +#define GL_NEGATIVE_X_EXT 0x87D9 +#define GL_NEGATIVE_Y_EXT 0x87DA +#define GL_NEGATIVE_Z_EXT 0x87DB +#define GL_NEGATIVE_W_EXT 0x87DC +#define GL_ZERO_EXT 0x87DD +#define GL_ONE_EXT 0x87DE +#define GL_NEGATIVE_ONE_EXT 0x87DF +#define GL_NORMALIZED_RANGE_EXT 0x87E0 +#define GL_FULL_RANGE_EXT 0x87E1 +#define GL_CURRENT_VERTEX_EXT 0x87E2 +#define GL_MVP_MATRIX_EXT 0x87E3 +#define GL_VARIANT_VALUE_EXT 0x87E4 +#define GL_VARIANT_DATATYPE_EXT 0x87E5 +#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 +#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 +#define GL_VARIANT_ARRAY_EXT 0x87E8 +#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 +#define GL_INVARIANT_VALUE_EXT 0x87EA +#define GL_INVARIANT_DATATYPE_EXT 0x87EB +#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC +#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED + typedef void(APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC)(void); + typedef void(APIENTRYP PFNGLENDVERTEXSHADEREXTPROC)(void); + typedef void(APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC)(GLuint id); + typedef GLuint(APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC)(GLuint range); + typedef void(APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC)(GLuint id); + typedef void(APIENTRYP PFNGLSHADEROP1EXTPROC)(GLenum op, GLuint res, GLuint arg1); + typedef void(APIENTRYP PFNGLSHADEROP2EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2); + typedef void(APIENTRYP PFNGLSHADEROP3EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); + typedef void(APIENTRYP + PFNGLSWIZZLEEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); + typedef void(APIENTRYP + PFNGLWRITEMASKEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); + typedef void(APIENTRYP PFNGLINSERTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num); + typedef void(APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num); + typedef GLuint(APIENTRYP + PFNGLGENSYMBOLSEXTPROC)(GLenum datatype, GLenum storagetype, GLenum range, GLuint components); + typedef void(APIENTRYP PFNGLSETINVARIANTEXTPROC)(GLuint id, GLenum type, const void* addr); + typedef void(APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC)(GLuint id, GLenum type, const void* addr); + typedef void(APIENTRYP PFNGLVARIANTBVEXTPROC)(GLuint id, const GLbyte* addr); + typedef void(APIENTRYP PFNGLVARIANTSVEXTPROC)(GLuint id, const GLshort* addr); + typedef void(APIENTRYP PFNGLVARIANTIVEXTPROC)(GLuint id, const GLint* addr); + typedef void(APIENTRYP PFNGLVARIANTFVEXTPROC)(GLuint id, const GLfloat* addr); + typedef void(APIENTRYP PFNGLVARIANTDVEXTPROC)(GLuint id, const GLdouble* addr); + typedef void(APIENTRYP PFNGLVARIANTUBVEXTPROC)(GLuint id, const GLubyte* addr); + typedef void(APIENTRYP PFNGLVARIANTUSVEXTPROC)(GLuint id, const GLushort* addr); + typedef void(APIENTRYP PFNGLVARIANTUIVEXTPROC)(GLuint id, const GLuint* addr); + typedef void(APIENTRYP PFNGLVARIANTPOINTEREXTPROC)(GLuint id, GLenum type, GLuint stride, const void* addr); + typedef void(APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id); + typedef void(APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id); + typedef GLuint(APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC)(GLenum light, GLenum value); + typedef GLuint(APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC)(GLenum face, GLenum value); + typedef GLuint(APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC)(GLenum unit, GLenum coord, GLenum value); + typedef GLuint(APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)(GLenum unit, GLenum value); + typedef GLuint(APIENTRYP PFNGLBINDPARAMETEREXTPROC)(GLenum value); + typedef GLboolean(APIENTRYP PFNGLISVARIANTENABLEDEXTPROC)(GLuint id, GLenum cap); + typedef void(APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, GLboolean* data); + typedef void(APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint* data); + typedef void(APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat* data); + typedef void(APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC)(GLuint id, GLenum value, void** data); + typedef void(APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, GLboolean* data); + typedef void(APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint* data); + typedef void(APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat* data); + typedef void(APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)(GLuint id, GLenum value, GLboolean* data); + typedef void(APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint* data); + typedef void(APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat* data); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBeginVertexShaderEXT(void); + GLAPI void APIENTRY glEndVertexShaderEXT(void); + GLAPI void APIENTRY glBindVertexShaderEXT(GLuint id); + GLAPI GLuint APIENTRY glGenVertexShadersEXT(GLuint range); + GLAPI void APIENTRY glDeleteVertexShaderEXT(GLuint id); + GLAPI void APIENTRY glShaderOp1EXT(GLenum op, GLuint res, GLuint arg1); + GLAPI void APIENTRY glShaderOp2EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2); + GLAPI void APIENTRY glShaderOp3EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); + GLAPI void APIENTRY glSwizzleEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); + GLAPI void APIENTRY glWriteMaskEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); + GLAPI void APIENTRY glInsertComponentEXT(GLuint res, GLuint src, GLuint num); + GLAPI void APIENTRY glExtractComponentEXT(GLuint res, GLuint src, GLuint num); + GLAPI GLuint APIENTRY glGenSymbolsEXT(GLenum datatype, GLenum storagetype, GLenum range, GLuint components); + GLAPI void APIENTRY glSetInvariantEXT(GLuint id, GLenum type, const void* addr); + GLAPI void APIENTRY glSetLocalConstantEXT(GLuint id, GLenum type, const void* addr); + GLAPI void APIENTRY glVariantbvEXT(GLuint id, const GLbyte* addr); + GLAPI void APIENTRY glVariantsvEXT(GLuint id, const GLshort* addr); + GLAPI void APIENTRY glVariantivEXT(GLuint id, const GLint* addr); + GLAPI void APIENTRY glVariantfvEXT(GLuint id, const GLfloat* addr); + GLAPI void APIENTRY glVariantdvEXT(GLuint id, const GLdouble* addr); + GLAPI void APIENTRY glVariantubvEXT(GLuint id, const GLubyte* addr); + GLAPI void APIENTRY glVariantusvEXT(GLuint id, const GLushort* addr); + GLAPI void APIENTRY glVariantuivEXT(GLuint id, const GLuint* addr); + GLAPI void APIENTRY glVariantPointerEXT(GLuint id, GLenum type, GLuint stride, const void* addr); + GLAPI void APIENTRY glEnableVariantClientStateEXT(GLuint id); + GLAPI void APIENTRY glDisableVariantClientStateEXT(GLuint id); + GLAPI GLuint APIENTRY glBindLightParameterEXT(GLenum light, GLenum value); + GLAPI GLuint APIENTRY glBindMaterialParameterEXT(GLenum face, GLenum value); + GLAPI GLuint APIENTRY glBindTexGenParameterEXT(GLenum unit, GLenum coord, GLenum value); + GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT(GLenum unit, GLenum value); + GLAPI GLuint APIENTRY glBindParameterEXT(GLenum value); + GLAPI GLboolean APIENTRY glIsVariantEnabledEXT(GLuint id, GLenum cap); + GLAPI void APIENTRY glGetVariantBooleanvEXT(GLuint id, GLenum value, GLboolean* data); + GLAPI void APIENTRY glGetVariantIntegervEXT(GLuint id, GLenum value, GLint* data); + GLAPI void APIENTRY glGetVariantFloatvEXT(GLuint id, GLenum value, GLfloat* data); + GLAPI void APIENTRY glGetVariantPointervEXT(GLuint id, GLenum value, void** data); + GLAPI void APIENTRY glGetInvariantBooleanvEXT(GLuint id, GLenum value, GLboolean* data); + GLAPI void APIENTRY glGetInvariantIntegervEXT(GLuint id, GLenum value, GLint* data); + GLAPI void APIENTRY glGetInvariantFloatvEXT(GLuint id, GLenum value, GLfloat* data); + GLAPI void APIENTRY glGetLocalConstantBooleanvEXT(GLuint id, GLenum value, GLboolean* data); + GLAPI void APIENTRY glGetLocalConstantIntegervEXT(GLuint id, GLenum value, GLint* data); + GLAPI void APIENTRY glGetLocalConstantFloatvEXT(GLuint id, GLenum value, GLfloat* data); +#endif +#endif /* GL_EXT_vertex_shader */ + +#ifndef GL_EXT_vertex_weighting +#define GL_EXT_vertex_weighting 1 +#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#define GL_MODELVIEW0_EXT 0x1700 +#define GL_MODELVIEW1_EXT 0x850A +#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B +#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 + typedef void(APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC)(GLfloat weight); + typedef void(APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC)(const GLfloat* weight); + typedef void(APIENTRYP + PFNGLVERTEXWEIGHTPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, const void* pointer); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glVertexWeightfEXT(GLfloat weight); + GLAPI void APIENTRY glVertexWeightfvEXT(const GLfloat* weight); + GLAPI void APIENTRY glVertexWeightPointerEXT(GLint size, GLenum type, GLsizei stride, const void* pointer); +#endif +#endif /* GL_EXT_vertex_weighting */ + +#ifndef GL_EXT_win32_keyed_mutex +#define GL_EXT_win32_keyed_mutex 1 + typedef GLboolean(APIENTRYP PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC)(GLuint memory, GLuint64 key, GLuint timeout); + typedef GLboolean(APIENTRYP PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC)(GLuint memory, GLuint64 key); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLboolean APIENTRY glAcquireKeyedMutexWin32EXT(GLuint memory, GLuint64 key, GLuint timeout); + GLAPI GLboolean APIENTRY glReleaseKeyedMutexWin32EXT(GLuint memory, GLuint64 key); +#endif +#endif /* GL_EXT_win32_keyed_mutex */ + +#ifndef GL_EXT_window_rectangles +#define GL_EXT_window_rectangles 1 +#define GL_INCLUSIVE_EXT 0x8F10 +#define GL_EXCLUSIVE_EXT 0x8F11 +#define GL_WINDOW_RECTANGLE_EXT 0x8F12 +#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13 +#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14 +#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15 + typedef void(APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC)(GLenum mode, GLsizei count, const GLint* box); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glWindowRectanglesEXT(GLenum mode, GLsizei count, const GLint* box); +#endif +#endif /* GL_EXT_window_rectangles */ + +#ifndef GL_EXT_x11_sync_object +#define GL_EXT_x11_sync_object 1 +#define GL_SYNC_X11_FENCE_EXT 0x90E1 + typedef GLsync(APIENTRYP + PFNGLIMPORTSYNCEXTPROC)(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLsync APIENTRY glImportSyncEXT(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); +#endif +#endif /* GL_EXT_x11_sync_object */ + +#ifndef GL_GREMEDY_frame_terminator +#define GL_GREMEDY_frame_terminator 1 + typedef void(APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFrameTerminatorGREMEDY(void); +#endif +#endif /* GL_GREMEDY_frame_terminator */ + +#ifndef GL_GREMEDY_string_marker +#define GL_GREMEDY_string_marker 1 + typedef void(APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC)(GLsizei len, const void* string); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glStringMarkerGREMEDY(GLsizei len, const void* string); +#endif +#endif /* GL_GREMEDY_string_marker */ + +#ifndef GL_HP_convolution_border_modes +#define GL_HP_convolution_border_modes 1 +#define GL_IGNORE_BORDER_HP 0x8150 +#define GL_CONSTANT_BORDER_HP 0x8151 +#define GL_REPLICATE_BORDER_HP 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 +#endif /* GL_HP_convolution_border_modes */ + +#ifndef GL_HP_image_transform +#define GL_HP_image_transform 1 +#define GL_IMAGE_SCALE_X_HP 0x8155 +#define GL_IMAGE_SCALE_Y_HP 0x8156 +#define GL_IMAGE_TRANSLATE_X_HP 0x8157 +#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 +#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 +#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A +#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B +#define GL_IMAGE_MAG_FILTER_HP 0x815C +#define GL_IMAGE_MIN_FILTER_HP 0x815D +#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E +#define GL_CUBIC_HP 0x815F +#define GL_AVERAGE_HP 0x8160 +#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 +#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 +#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 + typedef void(APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC)(GLenum target, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC)(GLenum target, GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, GLfloat* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glImageTransformParameteriHP(GLenum target, GLenum pname, GLint param); + GLAPI void APIENTRY glImageTransformParameterfHP(GLenum target, GLenum pname, GLfloat param); + GLAPI void APIENTRY glImageTransformParameterivHP(GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glImageTransformParameterfvHP(GLenum target, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glGetImageTransformParameterivHP(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetImageTransformParameterfvHP(GLenum target, GLenum pname, GLfloat* params); +#endif +#endif /* GL_HP_image_transform */ + +#ifndef GL_HP_occlusion_test +#define GL_HP_occlusion_test 1 +#define GL_OCCLUSION_TEST_HP 0x8165 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 +#endif /* GL_HP_occlusion_test */ + +#ifndef GL_HP_texture_lighting +#define GL_HP_texture_lighting 1 +#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 +#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 +#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 +#endif /* GL_HP_texture_lighting */ + +#ifndef GL_IBM_cull_vertex +#define GL_IBM_cull_vertex 1 +#define GL_CULL_VERTEX_IBM 103050 +#endif /* GL_IBM_cull_vertex */ + +#ifndef GL_IBM_multimode_draw_arrays +#define GL_IBM_multimode_draw_arrays 1 + typedef void(APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC)( + const GLenum* mode, + const GLint* first, + const GLsizei* count, + GLsizei primcount, + GLint modestride + ); + typedef void(APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC)( + const GLenum* mode, + const GLsizei* count, + GLenum type, + const void* const* indices, + GLsizei primcount, + GLint modestride + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMultiModeDrawArraysIBM( + const GLenum* mode, + const GLint* first, + const GLsizei* count, + GLsizei primcount, + GLint modestride + ); + GLAPI void APIENTRY glMultiModeDrawElementsIBM( + const GLenum* mode, + const GLsizei* count, + GLenum type, + const void* const* indices, + GLsizei primcount, + GLint modestride + ); +#endif +#endif /* GL_IBM_multimode_draw_arrays */ + +#ifndef GL_IBM_rasterpos_clip +#define GL_IBM_rasterpos_clip 1 +#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 +#endif /* GL_IBM_rasterpos_clip */ + +#ifndef GL_IBM_static_data +#define GL_IBM_static_data 1 +#define GL_ALL_STATIC_DATA_IBM 103060 +#define GL_STATIC_VERTEX_ARRAY_IBM 103061 + typedef void(APIENTRYP PFNGLFLUSHSTATICDATAIBMPROC)(GLenum target); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFlushStaticDataIBM(GLenum target); +#endif +#endif /* GL_IBM_static_data */ + +#ifndef GL_IBM_texture_mirrored_repeat +#define GL_IBM_texture_mirrored_repeat 1 +#define GL_MIRRORED_REPEAT_IBM 0x8370 +#endif /* GL_IBM_texture_mirrored_repeat */ + +#ifndef GL_IBM_vertex_array_lists +#define GL_IBM_vertex_array_lists 1 +#define GL_VERTEX_ARRAY_LIST_IBM 103070 +#define GL_NORMAL_ARRAY_LIST_IBM 103071 +#define GL_COLOR_ARRAY_LIST_IBM 103072 +#define GL_INDEX_ARRAY_LIST_IBM 103073 +#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 +#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 +#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 +#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 +#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 +#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 +#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 +#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 +#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 +#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 +#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 +#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 + typedef void(APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC)( + GLint size, + GLenum type, + GLint stride, + const void** pointer, + GLint ptrstride + ); + typedef void(APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)( + GLint size, + GLenum type, + GLint stride, + const void** pointer, + GLint ptrstride + ); + typedef void(APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC)(GLint stride, const GLboolean** pointer, GLint ptrstride); + typedef void(APIENTRYP + PFNGLFOGCOORDPOINTERLISTIBMPROC)(GLenum type, GLint stride, const void** pointer, GLint ptrstride); + typedef void(APIENTRYP + PFNGLINDEXPOINTERLISTIBMPROC)(GLenum type, GLint stride, const void** pointer, GLint ptrstride); + typedef void(APIENTRYP + PFNGLNORMALPOINTERLISTIBMPROC)(GLenum type, GLint stride, const void** pointer, GLint ptrstride); + typedef void(APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC)( + GLint size, + GLenum type, + GLint stride, + const void** pointer, + GLint ptrstride + ); + typedef void(APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC)( + GLint size, + GLenum type, + GLint stride, + const void** pointer, + GLint ptrstride + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glColorPointerListIBM(GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride); + GLAPI void APIENTRY + glSecondaryColorPointerListIBM(GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride); + GLAPI void APIENTRY glEdgeFlagPointerListIBM(GLint stride, const GLboolean** pointer, GLint ptrstride); + GLAPI void APIENTRY glFogCoordPointerListIBM(GLenum type, GLint stride, const void** pointer, GLint ptrstride); + GLAPI void APIENTRY glIndexPointerListIBM(GLenum type, GLint stride, const void** pointer, GLint ptrstride); + GLAPI void APIENTRY glNormalPointerListIBM(GLenum type, GLint stride, const void** pointer, GLint ptrstride); + GLAPI void APIENTRY + glTexCoordPointerListIBM(GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride); + GLAPI void APIENTRY + glVertexPointerListIBM(GLint size, GLenum type, GLint stride, const void** pointer, GLint ptrstride); +#endif +#endif /* GL_IBM_vertex_array_lists */ + +#ifndef GL_INGR_blend_func_separate +#define GL_INGR_blend_func_separate 1 + typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC)( + GLenum sfactorRGB, + GLenum dfactorRGB, + GLenum sfactorAlpha, + GLenum dfactorAlpha + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glBlendFuncSeparateINGR(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +#endif +#endif /* GL_INGR_blend_func_separate */ + +#ifndef GL_INGR_color_clamp +#define GL_INGR_color_clamp 1 +#define GL_RED_MIN_CLAMP_INGR 0x8560 +#define GL_GREEN_MIN_CLAMP_INGR 0x8561 +#define GL_BLUE_MIN_CLAMP_INGR 0x8562 +#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 +#define GL_RED_MAX_CLAMP_INGR 0x8564 +#define GL_GREEN_MAX_CLAMP_INGR 0x8565 +#define GL_BLUE_MAX_CLAMP_INGR 0x8566 +#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 +#endif /* GL_INGR_color_clamp */ + +#ifndef GL_INGR_interlace_read +#define GL_INGR_interlace_read 1 +#define GL_INTERLACE_READ_INGR 0x8568 +#endif /* GL_INGR_interlace_read */ + +#ifndef GL_INTEL_blackhole_render +#define GL_INTEL_blackhole_render 1 +#define GL_BLACKHOLE_RENDER_INTEL 0x83FC +#endif /* GL_INTEL_blackhole_render */ + +#ifndef GL_INTEL_conservative_rasterization +#define GL_INTEL_conservative_rasterization 1 +#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE +#endif /* GL_INTEL_conservative_rasterization */ + +#ifndef GL_INTEL_fragment_shader_ordering +#define GL_INTEL_fragment_shader_ordering 1 +#endif /* GL_INTEL_fragment_shader_ordering */ + +#ifndef GL_INTEL_framebuffer_CMAA +#define GL_INTEL_framebuffer_CMAA 1 + typedef void(APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glApplyFramebufferAttachmentCMAAINTEL(void); +#endif +#endif /* GL_INTEL_framebuffer_CMAA */ + +#ifndef GL_INTEL_map_texture +#define GL_INTEL_map_texture 1 +#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF +#define GL_LAYOUT_DEFAULT_INTEL 0 +#define GL_LAYOUT_LINEAR_INTEL 1 +#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2 + typedef void(APIENTRYP PFNGLSYNCTEXTUREINTELPROC)(GLuint texture); + typedef void(APIENTRYP PFNGLUNMAPTEXTURE2DINTELPROC)(GLuint texture, GLint level); + typedef void*(APIENTRYP PFNGLMAPTEXTURE2DINTELPROC)( + GLuint texture, + GLint level, + GLbitfield access, + GLint* stride, + GLenum* layout + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glSyncTextureINTEL(GLuint texture); + GLAPI void APIENTRY glUnmapTexture2DINTEL(GLuint texture, GLint level); + GLAPI void* APIENTRY + glMapTexture2DINTEL(GLuint texture, GLint level, GLbitfield access, GLint* stride, GLenum* layout); +#endif +#endif /* GL_INTEL_map_texture */ + +#ifndef GL_INTEL_parallel_arrays +#define GL_INTEL_parallel_arrays 1 +#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 +#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 +#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 +#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 +#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 + typedef void(APIENTRYP PFNGLVERTEXPOINTERVINTELPROC)(GLint size, GLenum type, const void** pointer); + typedef void(APIENTRYP PFNGLNORMALPOINTERVINTELPROC)(GLenum type, const void** pointer); + typedef void(APIENTRYP PFNGLCOLORPOINTERVINTELPROC)(GLint size, GLenum type, const void** pointer); + typedef void(APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC)(GLint size, GLenum type, const void** pointer); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glVertexPointervINTEL(GLint size, GLenum type, const void** pointer); + GLAPI void APIENTRY glNormalPointervINTEL(GLenum type, const void** pointer); + GLAPI void APIENTRY glColorPointervINTEL(GLint size, GLenum type, const void** pointer); + GLAPI void APIENTRY glTexCoordPointervINTEL(GLint size, GLenum type, const void** pointer); +#endif +#endif /* GL_INTEL_parallel_arrays */ + +#ifndef GL_INTEL_performance_query +#define GL_INTEL_performance_query 1 +#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 +#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001 +#define GL_PERFQUERY_WAIT_INTEL 0x83FB +#define GL_PERFQUERY_FLUSH_INTEL 0x83FA +#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 +#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0 +#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1 +#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2 +#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3 +#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4 +#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5 +#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8 +#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9 +#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA +#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB +#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC +#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD +#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE +#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF +#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 + typedef void(APIENTRYP PFNGLBEGINPERFQUERYINTELPROC)(GLuint queryHandle); + typedef void(APIENTRYP PFNGLCREATEPERFQUERYINTELPROC)(GLuint queryId, GLuint* queryHandle); + typedef void(APIENTRYP PFNGLDELETEPERFQUERYINTELPROC)(GLuint queryHandle); + typedef void(APIENTRYP PFNGLENDPERFQUERYINTELPROC)(GLuint queryHandle); + typedef void(APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC)(GLuint* queryId); + typedef void(APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC)(GLuint queryId, GLuint* nextQueryId); + typedef void(APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC)( + GLuint queryId, + GLuint counterId, + GLuint counterNameLength, + GLchar* counterName, + GLuint counterDescLength, + GLchar* counterDesc, + GLuint* counterOffset, + GLuint* counterDataSize, + GLuint* counterTypeEnum, + GLuint* counterDataTypeEnum, + GLuint64* rawCounterMaxValue + ); + typedef void(APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC)( + GLuint queryHandle, + GLuint flags, + GLsizei dataSize, + void* data, + GLuint* bytesWritten + ); + typedef void(APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC)(GLchar* queryName, GLuint* queryId); + typedef void(APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC)( + GLuint queryId, + GLuint queryNameLength, + GLchar* queryName, + GLuint* dataSize, + GLuint* noCounters, + GLuint* noInstances, + GLuint* capsMask + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBeginPerfQueryINTEL(GLuint queryHandle); + GLAPI void APIENTRY glCreatePerfQueryINTEL(GLuint queryId, GLuint* queryHandle); + GLAPI void APIENTRY glDeletePerfQueryINTEL(GLuint queryHandle); + GLAPI void APIENTRY glEndPerfQueryINTEL(GLuint queryHandle); + GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL(GLuint* queryId); + GLAPI void APIENTRY glGetNextPerfQueryIdINTEL(GLuint queryId, GLuint* nextQueryId); + GLAPI void APIENTRY glGetPerfCounterInfoINTEL( + GLuint queryId, + GLuint counterId, + GLuint counterNameLength, + GLchar* counterName, + GLuint counterDescLength, + GLchar* counterDesc, + GLuint* counterOffset, + GLuint* counterDataSize, + GLuint* counterTypeEnum, + GLuint* counterDataTypeEnum, + GLuint64* rawCounterMaxValue + ); + GLAPI void APIENTRY + glGetPerfQueryDataINTEL(GLuint queryHandle, GLuint flags, GLsizei dataSize, void* data, GLuint* bytesWritten); + GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL(GLchar* queryName, GLuint* queryId); + GLAPI void APIENTRY glGetPerfQueryInfoINTEL( + GLuint queryId, + GLuint queryNameLength, + GLchar* queryName, + GLuint* dataSize, + GLuint* noCounters, + GLuint* noInstances, + GLuint* capsMask + ); +#endif +#endif /* GL_INTEL_performance_query */ + +#ifndef GL_MESAX_texture_stack +#define GL_MESAX_texture_stack 1 +#define GL_TEXTURE_1D_STACK_MESAX 0x8759 +#define GL_TEXTURE_2D_STACK_MESAX 0x875A +#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B +#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C +#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D +#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E +#endif /* GL_MESAX_texture_stack */ + +#ifndef GL_MESA_framebuffer_flip_x +#define GL_MESA_framebuffer_flip_x 1 +#define GL_FRAMEBUFFER_FLIP_X_MESA 0x8BBC +#endif /* GL_MESA_framebuffer_flip_x */ + +#ifndef GL_MESA_framebuffer_flip_y +#define GL_MESA_framebuffer_flip_y 1 +#define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB + typedef void(APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC)(GLenum target, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC)(GLenum target, GLenum pname, GLint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFramebufferParameteriMESA(GLenum target, GLenum pname, GLint param); + GLAPI void APIENTRY glGetFramebufferParameterivMESA(GLenum target, GLenum pname, GLint* params); +#endif +#endif /* GL_MESA_framebuffer_flip_y */ + +#ifndef GL_MESA_framebuffer_swap_xy +#define GL_MESA_framebuffer_swap_xy 1 +#define GL_FRAMEBUFFER_SWAP_XY_MESA 0x8BBD +#endif /* GL_MESA_framebuffer_swap_xy */ + +#ifndef GL_MESA_pack_invert +#define GL_MESA_pack_invert 1 +#define GL_PACK_INVERT_MESA 0x8758 +#endif /* GL_MESA_pack_invert */ + +#ifndef GL_MESA_program_binary_formats +#define GL_MESA_program_binary_formats 1 +#define GL_PROGRAM_BINARY_FORMAT_MESA 0x875F +#endif /* GL_MESA_program_binary_formats */ + +#ifndef GL_MESA_resize_buffers +#define GL_MESA_resize_buffers 1 + typedef void(APIENTRYP PFNGLRESIZEBUFFERSMESAPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glResizeBuffersMESA(void); +#endif +#endif /* GL_MESA_resize_buffers */ + +#ifndef GL_MESA_shader_integer_functions +#define GL_MESA_shader_integer_functions 1 +#endif /* GL_MESA_shader_integer_functions */ + +#ifndef GL_MESA_texture_const_bandwidth +#define GL_MESA_texture_const_bandwidth 1 +#define GL_CONST_BW_TILING_MESA 0x8BBE +#endif /* GL_MESA_texture_const_bandwidth */ + +#ifndef GL_MESA_tile_raster_order +#define GL_MESA_tile_raster_order 1 +#define GL_TILE_RASTER_ORDER_FIXED_MESA 0x8BB8 +#define GL_TILE_RASTER_ORDER_INCREASING_X_MESA 0x8BB9 +#define GL_TILE_RASTER_ORDER_INCREASING_Y_MESA 0x8BBA +#endif /* GL_MESA_tile_raster_order */ + +#ifndef GL_MESA_window_pos +#define GL_MESA_window_pos 1 + typedef void(APIENTRYP PFNGLWINDOWPOS2DMESAPROC)(GLdouble x, GLdouble y); + typedef void(APIENTRYP PFNGLWINDOWPOS2DVMESAPROC)(const GLdouble* v); + typedef void(APIENTRYP PFNGLWINDOWPOS2FMESAPROC)(GLfloat x, GLfloat y); + typedef void(APIENTRYP PFNGLWINDOWPOS2FVMESAPROC)(const GLfloat* v); + typedef void(APIENTRYP PFNGLWINDOWPOS2IMESAPROC)(GLint x, GLint y); + typedef void(APIENTRYP PFNGLWINDOWPOS2IVMESAPROC)(const GLint* v); + typedef void(APIENTRYP PFNGLWINDOWPOS2SMESAPROC)(GLshort x, GLshort y); + typedef void(APIENTRYP PFNGLWINDOWPOS2SVMESAPROC)(const GLshort* v); + typedef void(APIENTRYP PFNGLWINDOWPOS3DMESAPROC)(GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLWINDOWPOS3DVMESAPROC)(const GLdouble* v); + typedef void(APIENTRYP PFNGLWINDOWPOS3FMESAPROC)(GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLWINDOWPOS3FVMESAPROC)(const GLfloat* v); + typedef void(APIENTRYP PFNGLWINDOWPOS3IMESAPROC)(GLint x, GLint y, GLint z); + typedef void(APIENTRYP PFNGLWINDOWPOS3IVMESAPROC)(const GLint* v); + typedef void(APIENTRYP PFNGLWINDOWPOS3SMESAPROC)(GLshort x, GLshort y, GLshort z); + typedef void(APIENTRYP PFNGLWINDOWPOS3SVMESAPROC)(const GLshort* v); + typedef void(APIENTRYP PFNGLWINDOWPOS4DMESAPROC)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + typedef void(APIENTRYP PFNGLWINDOWPOS4DVMESAPROC)(const GLdouble* v); + typedef void(APIENTRYP PFNGLWINDOWPOS4FMESAPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + typedef void(APIENTRYP PFNGLWINDOWPOS4FVMESAPROC)(const GLfloat* v); + typedef void(APIENTRYP PFNGLWINDOWPOS4IMESAPROC)(GLint x, GLint y, GLint z, GLint w); + typedef void(APIENTRYP PFNGLWINDOWPOS4IVMESAPROC)(const GLint* v); + typedef void(APIENTRYP PFNGLWINDOWPOS4SMESAPROC)(GLshort x, GLshort y, GLshort z, GLshort w); + typedef void(APIENTRYP PFNGLWINDOWPOS4SVMESAPROC)(const GLshort* v); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glWindowPos2dMESA(GLdouble x, GLdouble y); + GLAPI void APIENTRY glWindowPos2dvMESA(const GLdouble* v); + GLAPI void APIENTRY glWindowPos2fMESA(GLfloat x, GLfloat y); + GLAPI void APIENTRY glWindowPos2fvMESA(const GLfloat* v); + GLAPI void APIENTRY glWindowPos2iMESA(GLint x, GLint y); + GLAPI void APIENTRY glWindowPos2ivMESA(const GLint* v); + GLAPI void APIENTRY glWindowPos2sMESA(GLshort x, GLshort y); + GLAPI void APIENTRY glWindowPos2svMESA(const GLshort* v); + GLAPI void APIENTRY glWindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glWindowPos3dvMESA(const GLdouble* v); + GLAPI void APIENTRY glWindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glWindowPos3fvMESA(const GLfloat* v); + GLAPI void APIENTRY glWindowPos3iMESA(GLint x, GLint y, GLint z); + GLAPI void APIENTRY glWindowPos3ivMESA(const GLint* v); + GLAPI void APIENTRY glWindowPos3sMESA(GLshort x, GLshort y, GLshort z); + GLAPI void APIENTRY glWindowPos3svMESA(const GLshort* v); + GLAPI void APIENTRY glWindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glWindowPos4dvMESA(const GLdouble* v); + GLAPI void APIENTRY glWindowPos4fMESA(GLfloat x, GLfloat y, GLfloat z, GLfloat w); + GLAPI void APIENTRY glWindowPos4fvMESA(const GLfloat* v); + GLAPI void APIENTRY glWindowPos4iMESA(GLint x, GLint y, GLint z, GLint w); + GLAPI void APIENTRY glWindowPos4ivMESA(const GLint* v); + GLAPI void APIENTRY glWindowPos4sMESA(GLshort x, GLshort y, GLshort z, GLshort w); + GLAPI void APIENTRY glWindowPos4svMESA(const GLshort* v); +#endif +#endif /* GL_MESA_window_pos */ + +#ifndef GL_MESA_ycbcr_texture +#define GL_MESA_ycbcr_texture 1 +#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB +#define GL_YCBCR_MESA 0x8757 +#endif /* GL_MESA_ycbcr_texture */ + +#ifndef GL_NVX_blend_equation_advanced_multi_draw_buffers +#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1 +#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */ + +#ifndef GL_NVX_conditional_render +#define GL_NVX_conditional_render 1 + typedef void(APIENTRYP PFNGLBEGINCONDITIONALRENDERNVXPROC)(GLuint id); + typedef void(APIENTRYP PFNGLENDCONDITIONALRENDERNVXPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBeginConditionalRenderNVX(GLuint id); + GLAPI void APIENTRY glEndConditionalRenderNVX(void); +#endif +#endif /* GL_NVX_conditional_render */ + +#ifndef GL_NVX_gpu_memory_info +#define GL_NVX_gpu_memory_info 1 +#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 +#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 +#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 +#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A +#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B +#endif /* GL_NVX_gpu_memory_info */ + +#ifndef GL_NVX_gpu_multicast2 +#define GL_NVX_gpu_multicast2 1 +#define GL_UPLOAD_GPU_MASK_NVX 0x954A + typedef void(APIENTRYP PFNGLUPLOADGPUMASKNVXPROC)(GLbitfield mask); + typedef void(APIENTRYP + PFNGLMULTICASTVIEWPORTARRAYVNVXPROC)(GLuint gpu, GLuint first, GLsizei count, const GLfloat* v); + typedef void(APIENTRYP PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC)( + GLuint gpu, + GLuint index, + GLfloat xcoeff, + GLfloat ycoeff + ); + typedef void(APIENTRYP PFNGLMULTICASTSCISSORARRAYVNVXPROC)(GLuint gpu, GLuint first, GLsizei count, const GLint* v); + typedef GLuint(APIENTRYP PFNGLASYNCCOPYBUFFERSUBDATANVXPROC)( + GLsizei waitSemaphoreCount, + const GLuint* waitSemaphoreArray, + const GLuint64* fenceValueArray, + GLuint readGpu, + GLbitfield writeGpuMask, + GLuint readBuffer, + GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size, + GLsizei signalSemaphoreCount, + const GLuint* signalSemaphoreArray, + const GLuint64* signalValueArray + ); + typedef GLuint(APIENTRYP PFNGLASYNCCOPYIMAGESUBDATANVXPROC)( + GLsizei waitSemaphoreCount, + const GLuint* waitSemaphoreArray, + const GLuint64* waitValueArray, + GLuint srcGpu, + GLbitfield dstGpuMask, + GLuint srcName, + GLenum srcTarget, + GLint srcLevel, + GLint srcX, + GLint srcY, + GLint srcZ, + GLuint dstName, + GLenum dstTarget, + GLint dstLevel, + GLint dstX, + GLint dstY, + GLint dstZ, + GLsizei srcWidth, + GLsizei srcHeight, + GLsizei srcDepth, + GLsizei signalSemaphoreCount, + const GLuint* signalSemaphoreArray, + const GLuint64* signalValueArray + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glUploadGpuMaskNVX(GLbitfield mask); + GLAPI void APIENTRY glMulticastViewportArrayvNVX(GLuint gpu, GLuint first, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY glMulticastViewportPositionWScaleNVX(GLuint gpu, GLuint index, GLfloat xcoeff, GLfloat ycoeff); + GLAPI void APIENTRY glMulticastScissorArrayvNVX(GLuint gpu, GLuint first, GLsizei count, const GLint* v); + GLAPI GLuint APIENTRY glAsyncCopyBufferSubDataNVX( + GLsizei waitSemaphoreCount, + const GLuint* waitSemaphoreArray, + const GLuint64* fenceValueArray, + GLuint readGpu, + GLbitfield writeGpuMask, + GLuint readBuffer, + GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size, + GLsizei signalSemaphoreCount, + const GLuint* signalSemaphoreArray, + const GLuint64* signalValueArray + ); + GLAPI GLuint APIENTRY glAsyncCopyImageSubDataNVX( + GLsizei waitSemaphoreCount, + const GLuint* waitSemaphoreArray, + const GLuint64* waitValueArray, + GLuint srcGpu, + GLbitfield dstGpuMask, + GLuint srcName, + GLenum srcTarget, + GLint srcLevel, + GLint srcX, + GLint srcY, + GLint srcZ, + GLuint dstName, + GLenum dstTarget, + GLint dstLevel, + GLint dstX, + GLint dstY, + GLint dstZ, + GLsizei srcWidth, + GLsizei srcHeight, + GLsizei srcDepth, + GLsizei signalSemaphoreCount, + const GLuint* signalSemaphoreArray, + const GLuint64* signalValueArray + ); +#endif +#endif /* GL_NVX_gpu_multicast2 */ + +#ifndef GL_NVX_linked_gpu_multicast +#define GL_NVX_linked_gpu_multicast 1 +#define GL_LGPU_SEPARATE_STORAGE_BIT_NVX 0x0800 +#define GL_MAX_LGPU_GPUS_NVX 0x92BA + typedef void(APIENTRYP PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)( + GLbitfield gpuMask, + GLuint buffer, + GLintptr offset, + GLsizeiptr size, + const void* data + ); + typedef void(APIENTRYP PFNGLLGPUCOPYIMAGESUBDATANVXPROC)( + GLuint sourceGpu, + GLbitfield destinationGpuMask, + GLuint srcName, + GLenum srcTarget, + GLint srcLevel, + GLint srcX, + GLint srxY, + GLint srcZ, + GLuint dstName, + GLenum dstTarget, + GLint dstLevel, + GLint dstX, + GLint dstY, + GLint dstZ, + GLsizei width, + GLsizei height, + GLsizei depth + ); + typedef void(APIENTRYP PFNGLLGPUINTERLOCKNVXPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glLGPUNamedBufferSubDataNVX(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); + GLAPI void APIENTRY glLGPUCopyImageSubDataNVX( + GLuint sourceGpu, + GLbitfield destinationGpuMask, + GLuint srcName, + GLenum srcTarget, + GLint srcLevel, + GLint srcX, + GLint srxY, + GLint srcZ, + GLuint dstName, + GLenum dstTarget, + GLint dstLevel, + GLint dstX, + GLint dstY, + GLint dstZ, + GLsizei width, + GLsizei height, + GLsizei depth + ); + GLAPI void APIENTRY glLGPUInterlockNVX(void); +#endif +#endif /* GL_NVX_linked_gpu_multicast */ + +#ifndef GL_NVX_progress_fence +#define GL_NVX_progress_fence 1 + typedef GLuint(APIENTRYP PFNGLCREATEPROGRESSFENCENVXPROC)(void); + typedef void(APIENTRYP PFNGLSIGNALSEMAPHOREUI64NVXPROC)( + GLuint signalGpu, + GLsizei fenceObjectCount, + const GLuint* semaphoreArray, + const GLuint64* fenceValueArray + ); + typedef void(APIENTRYP PFNGLWAITSEMAPHOREUI64NVXPROC)( + GLuint waitGpu, + GLsizei fenceObjectCount, + const GLuint* semaphoreArray, + const GLuint64* fenceValueArray + ); + typedef void(APIENTRYP PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC)( + GLsizei fenceObjectCount, + const GLuint* semaphoreArray, + const GLuint64* fenceValueArray + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLuint APIENTRY glCreateProgressFenceNVX(void); + GLAPI void APIENTRY glSignalSemaphoreui64NVX( + GLuint signalGpu, + GLsizei fenceObjectCount, + const GLuint* semaphoreArray, + const GLuint64* fenceValueArray + ); + GLAPI void APIENTRY glWaitSemaphoreui64NVX( + GLuint waitGpu, + GLsizei fenceObjectCount, + const GLuint* semaphoreArray, + const GLuint64* fenceValueArray + ); + GLAPI void APIENTRY glClientWaitSemaphoreui64NVX( + GLsizei fenceObjectCount, + const GLuint* semaphoreArray, + const GLuint64* fenceValueArray + ); +#endif +#endif /* GL_NVX_progress_fence */ + +#ifndef GL_NV_alpha_to_coverage_dither_control +#define GL_NV_alpha_to_coverage_dither_control 1 +#define GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV 0x934D +#define GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV 0x934E +#define GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV 0x934F +#define GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV 0x92BF + typedef void(APIENTRYP PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC)(GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glAlphaToCoverageDitherControlNV(GLenum mode); +#endif +#endif /* GL_NV_alpha_to_coverage_dither_control */ + +#ifndef GL_NV_bindless_multi_draw_indirect +#define GL_NV_bindless_multi_draw_indirect 1 + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)( + GLenum mode, + const void* indirect, + GLsizei drawCount, + GLsizei stride, + GLint vertexBufferCount + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)( + GLenum mode, + GLenum type, + const void* indirect, + GLsizei drawCount, + GLsizei stride, + GLint vertexBufferCount + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessNV( + GLenum mode, + const void* indirect, + GLsizei drawCount, + GLsizei stride, + GLint vertexBufferCount + ); + GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessNV( + GLenum mode, + GLenum type, + const void* indirect, + GLsizei drawCount, + GLsizei stride, + GLint vertexBufferCount + ); +#endif +#endif /* GL_NV_bindless_multi_draw_indirect */ + +#ifndef GL_NV_bindless_multi_draw_indirect_count +#define GL_NV_bindless_multi_draw_indirect_count 1 + typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)( + GLenum mode, + const void* indirect, + GLsizei drawCount, + GLsizei maxDrawCount, + GLsizei stride, + GLint vertexBufferCount + ); + typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)( + GLenum mode, + GLenum type, + const void* indirect, + GLsizei drawCount, + GLsizei maxDrawCount, + GLsizei stride, + GLint vertexBufferCount + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMultiDrawArraysIndirectBindlessCountNV( + GLenum mode, + const void* indirect, + GLsizei drawCount, + GLsizei maxDrawCount, + GLsizei stride, + GLint vertexBufferCount + ); + GLAPI void APIENTRY glMultiDrawElementsIndirectBindlessCountNV( + GLenum mode, + GLenum type, + const void* indirect, + GLsizei drawCount, + GLsizei maxDrawCount, + GLsizei stride, + GLint vertexBufferCount + ); +#endif +#endif /* GL_NV_bindless_multi_draw_indirect_count */ + +#ifndef GL_NV_bindless_texture +#define GL_NV_bindless_texture 1 + typedef GLuint64(APIENTRYP PFNGLGETTEXTUREHANDLENVPROC)(GLuint texture); + typedef GLuint64(APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC)(GLuint texture, GLuint sampler); + typedef void(APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle); + typedef void(APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)(GLuint64 handle); + typedef GLuint64(APIENTRYP PFNGLGETIMAGEHANDLENVPROC)( + GLuint texture, + GLint level, + GLboolean layered, + GLint layer, + GLenum format + ); + typedef void(APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle, GLenum access); + typedef void(APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)(GLuint64 handle); + typedef void(APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC)(GLint location, GLuint64 value); + typedef void(APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC)(GLint location, GLsizei count, const GLuint64* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)(GLuint program, GLint location, GLuint64 value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64* values + ); + typedef GLboolean(APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle); + typedef GLboolean(APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLuint64 APIENTRY glGetTextureHandleNV(GLuint texture); + GLAPI GLuint64 APIENTRY glGetTextureSamplerHandleNV(GLuint texture, GLuint sampler); + GLAPI void APIENTRY glMakeTextureHandleResidentNV(GLuint64 handle); + GLAPI void APIENTRY glMakeTextureHandleNonResidentNV(GLuint64 handle); + GLAPI GLuint64 APIENTRY + glGetImageHandleNV(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); + GLAPI void APIENTRY glMakeImageHandleResidentNV(GLuint64 handle, GLenum access); + GLAPI void APIENTRY glMakeImageHandleNonResidentNV(GLuint64 handle); + GLAPI void APIENTRY glUniformHandleui64NV(GLint location, GLuint64 value); + GLAPI void APIENTRY glUniformHandleui64vNV(GLint location, GLsizei count, const GLuint64* value); + GLAPI void APIENTRY glProgramUniformHandleui64NV(GLuint program, GLint location, GLuint64 value); + GLAPI void APIENTRY + glProgramUniformHandleui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64* values); + GLAPI GLboolean APIENTRY glIsTextureHandleResidentNV(GLuint64 handle); + GLAPI GLboolean APIENTRY glIsImageHandleResidentNV(GLuint64 handle); +#endif +#endif /* GL_NV_bindless_texture */ + +#ifndef GL_NV_blend_equation_advanced +#define GL_NV_blend_equation_advanced 1 +#define GL_BLEND_OVERLAP_NV 0x9281 +#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 +#define GL_BLUE_NV 0x1905 +#define GL_COLORBURN_NV 0x929A +#define GL_COLORDODGE_NV 0x9299 +#define GL_CONJOINT_NV 0x9284 +#define GL_CONTRAST_NV 0x92A1 +#define GL_DARKEN_NV 0x9297 +#define GL_DIFFERENCE_NV 0x929E +#define GL_DISJOINT_NV 0x9283 +#define GL_DST_ATOP_NV 0x928F +#define GL_DST_IN_NV 0x928B +#define GL_DST_NV 0x9287 +#define GL_DST_OUT_NV 0x928D +#define GL_DST_OVER_NV 0x9289 +#define GL_EXCLUSION_NV 0x92A0 +#define GL_GREEN_NV 0x1904 +#define GL_HARDLIGHT_NV 0x929B +#define GL_HARDMIX_NV 0x92A9 +#define GL_HSL_COLOR_NV 0x92AF +#define GL_HSL_HUE_NV 0x92AD +#define GL_HSL_LUMINOSITY_NV 0x92B0 +#define GL_HSL_SATURATION_NV 0x92AE +#define GL_INVERT_OVG_NV 0x92B4 +#define GL_INVERT_RGB_NV 0x92A3 +#define GL_LIGHTEN_NV 0x9298 +#define GL_LINEARBURN_NV 0x92A5 +#define GL_LINEARDODGE_NV 0x92A4 +#define GL_LINEARLIGHT_NV 0x92A7 +#define GL_MINUS_CLAMPED_NV 0x92B3 +#define GL_MINUS_NV 0x929F +#define GL_MULTIPLY_NV 0x9294 +#define GL_OVERLAY_NV 0x9296 +#define GL_PINLIGHT_NV 0x92A8 +#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 +#define GL_PLUS_CLAMPED_NV 0x92B1 +#define GL_PLUS_DARKER_NV 0x9292 +#define GL_PLUS_NV 0x9291 +#define GL_RED_NV 0x1903 +#define GL_SCREEN_NV 0x9295 +#define GL_SOFTLIGHT_NV 0x929C +#define GL_SRC_ATOP_NV 0x928E +#define GL_SRC_IN_NV 0x928A +#define GL_SRC_NV 0x9286 +#define GL_SRC_OUT_NV 0x928C +#define GL_SRC_OVER_NV 0x9288 +#define GL_UNCORRELATED_NV 0x9282 +#define GL_VIVIDLIGHT_NV 0x92A6 +#define GL_XOR_NV 0x1506 + typedef void(APIENTRYP PFNGLBLENDPARAMETERINVPROC)(GLenum pname, GLint value); + typedef void(APIENTRYP PFNGLBLENDBARRIERNVPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBlendParameteriNV(GLenum pname, GLint value); + GLAPI void APIENTRY glBlendBarrierNV(void); +#endif +#endif /* GL_NV_blend_equation_advanced */ + +#ifndef GL_NV_blend_equation_advanced_coherent +#define GL_NV_blend_equation_advanced_coherent 1 +#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 +#endif /* GL_NV_blend_equation_advanced_coherent */ + +#ifndef GL_NV_blend_minmax_factor +#define GL_NV_blend_minmax_factor 1 +#endif /* GL_NV_blend_minmax_factor */ + +#ifndef GL_NV_blend_square +#define GL_NV_blend_square 1 +#endif /* GL_NV_blend_square */ + +#ifndef GL_NV_clip_space_w_scaling +#define GL_NV_clip_space_w_scaling 1 +#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C +#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D +#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E + typedef void(APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC)(GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glViewportPositionWScaleNV(GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#endif +#endif /* GL_NV_clip_space_w_scaling */ + +#ifndef GL_NV_command_list +#define GL_NV_command_list 1 +#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000 +#define GL_NOP_COMMAND_NV 0x0001 +#define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002 +#define GL_DRAW_ARRAYS_COMMAND_NV 0x0003 +#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004 +#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005 +#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006 +#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007 +#define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008 +#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009 +#define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000A +#define GL_BLEND_COLOR_COMMAND_NV 0x000B +#define GL_STENCIL_REF_COMMAND_NV 0x000C +#define GL_LINE_WIDTH_COMMAND_NV 0x000D +#define GL_POLYGON_OFFSET_COMMAND_NV 0x000E +#define GL_ALPHA_REF_COMMAND_NV 0x000F +#define GL_VIEWPORT_COMMAND_NV 0x0010 +#define GL_SCISSOR_COMMAND_NV 0x0011 +#define GL_FRONT_FACE_COMMAND_NV 0x0012 + typedef void(APIENTRYP PFNGLCREATESTATESNVPROC)(GLsizei n, GLuint* states); + typedef void(APIENTRYP PFNGLDELETESTATESNVPROC)(GLsizei n, const GLuint* states); + typedef GLboolean(APIENTRYP PFNGLISSTATENVPROC)(GLuint state); + typedef void(APIENTRYP PFNGLSTATECAPTURENVPROC)(GLuint state, GLenum mode); + typedef GLuint(APIENTRYP PFNGLGETCOMMANDHEADERNVPROC)(GLenum tokenID, GLuint size); + typedef GLushort(APIENTRYP PFNGLGETSTAGEINDEXNVPROC)(GLenum shadertype); + typedef void(APIENTRYP PFNGLDRAWCOMMANDSNVPROC)( + GLenum primitiveMode, + GLuint buffer, + const GLintptr* indirects, + const GLsizei* sizes, + GLuint count + ); + typedef void(APIENTRYP PFNGLDRAWCOMMANDSADDRESSNVPROC)( + GLenum primitiveMode, + const GLuint64* indirects, + const GLsizei* sizes, + GLuint count + ); + typedef void(APIENTRYP PFNGLDRAWCOMMANDSSTATESNVPROC)( + GLuint buffer, + const GLintptr* indirects, + const GLsizei* sizes, + const GLuint* states, + const GLuint* fbos, + GLuint count + ); + typedef void(APIENTRYP PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)( + const GLuint64* indirects, + const GLsizei* sizes, + const GLuint* states, + const GLuint* fbos, + GLuint count + ); + typedef void(APIENTRYP PFNGLCREATECOMMANDLISTSNVPROC)(GLsizei n, GLuint* lists); + typedef void(APIENTRYP PFNGLDELETECOMMANDLISTSNVPROC)(GLsizei n, const GLuint* lists); + typedef GLboolean(APIENTRYP PFNGLISCOMMANDLISTNVPROC)(GLuint list); + typedef void(APIENTRYP PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)( + GLuint list, + GLuint segment, + const void** indirects, + const GLsizei* sizes, + const GLuint* states, + const GLuint* fbos, + GLuint count + ); + typedef void(APIENTRYP PFNGLCOMMANDLISTSEGMENTSNVPROC)(GLuint list, GLuint segments); + typedef void(APIENTRYP PFNGLCOMPILECOMMANDLISTNVPROC)(GLuint list); + typedef void(APIENTRYP PFNGLCALLCOMMANDLISTNVPROC)(GLuint list); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glCreateStatesNV(GLsizei n, GLuint* states); + GLAPI void APIENTRY glDeleteStatesNV(GLsizei n, const GLuint* states); + GLAPI GLboolean APIENTRY glIsStateNV(GLuint state); + GLAPI void APIENTRY glStateCaptureNV(GLuint state, GLenum mode); + GLAPI GLuint APIENTRY glGetCommandHeaderNV(GLenum tokenID, GLuint size); + GLAPI GLushort APIENTRY glGetStageIndexNV(GLenum shadertype); + GLAPI void APIENTRY glDrawCommandsNV( + GLenum primitiveMode, + GLuint buffer, + const GLintptr* indirects, + const GLsizei* sizes, + GLuint count + ); + GLAPI void APIENTRY + glDrawCommandsAddressNV(GLenum primitiveMode, const GLuint64* indirects, const GLsizei* sizes, GLuint count); + GLAPI void APIENTRY glDrawCommandsStatesNV( + GLuint buffer, + const GLintptr* indirects, + const GLsizei* sizes, + const GLuint* states, + const GLuint* fbos, + GLuint count + ); + GLAPI void APIENTRY glDrawCommandsStatesAddressNV( + const GLuint64* indirects, + const GLsizei* sizes, + const GLuint* states, + const GLuint* fbos, + GLuint count + ); + GLAPI void APIENTRY glCreateCommandListsNV(GLsizei n, GLuint* lists); + GLAPI void APIENTRY glDeleteCommandListsNV(GLsizei n, const GLuint* lists); + GLAPI GLboolean APIENTRY glIsCommandListNV(GLuint list); + GLAPI void APIENTRY glListDrawCommandsStatesClientNV( + GLuint list, + GLuint segment, + const void** indirects, + const GLsizei* sizes, + const GLuint* states, + const GLuint* fbos, + GLuint count + ); + GLAPI void APIENTRY glCommandListSegmentsNV(GLuint list, GLuint segments); + GLAPI void APIENTRY glCompileCommandListNV(GLuint list); + GLAPI void APIENTRY glCallCommandListNV(GLuint list); +#endif +#endif /* GL_NV_command_list */ + +#ifndef GL_NV_compute_program5 +#define GL_NV_compute_program5 1 +#define GL_COMPUTE_PROGRAM_NV 0x90FB +#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC +#endif /* GL_NV_compute_program5 */ + +#ifndef GL_NV_compute_shader_derivatives +#define GL_NV_compute_shader_derivatives 1 +#endif /* GL_NV_compute_shader_derivatives */ + +#ifndef GL_NV_conditional_render +#define GL_NV_conditional_render 1 +#define GL_QUERY_WAIT_NV 0x8E13 +#define GL_QUERY_NO_WAIT_NV 0x8E14 +#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 + typedef void(APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC)(GLuint id, GLenum mode); + typedef void(APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBeginConditionalRenderNV(GLuint id, GLenum mode); + GLAPI void APIENTRY glEndConditionalRenderNV(void); +#endif +#endif /* GL_NV_conditional_render */ + +#ifndef GL_NV_conservative_raster +#define GL_NV_conservative_raster 1 +#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346 +#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347 +#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348 +#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349 + typedef void(APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC)(GLuint xbits, GLuint ybits); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glSubpixelPrecisionBiasNV(GLuint xbits, GLuint ybits); +#endif +#endif /* GL_NV_conservative_raster */ + +#ifndef GL_NV_conservative_raster_dilate +#define GL_NV_conservative_raster_dilate 1 +#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379 +#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A +#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B + typedef void(APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)(GLenum pname, GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glConservativeRasterParameterfNV(GLenum pname, GLfloat value); +#endif +#endif /* GL_NV_conservative_raster_dilate */ + +#ifndef GL_NV_conservative_raster_pre_snap +#define GL_NV_conservative_raster_pre_snap 1 +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550 +#endif /* GL_NV_conservative_raster_pre_snap */ + +#ifndef GL_NV_conservative_raster_pre_snap_triangles +#define GL_NV_conservative_raster_pre_snap_triangles 1 +#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D +#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F + typedef void(APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC)(GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glConservativeRasterParameteriNV(GLenum pname, GLint param); +#endif +#endif /* GL_NV_conservative_raster_pre_snap_triangles */ + +#ifndef GL_NV_conservative_raster_underestimation +#define GL_NV_conservative_raster_underestimation 1 +#endif /* GL_NV_conservative_raster_underestimation */ + +#ifndef GL_NV_copy_depth_to_color +#define GL_NV_copy_depth_to_color 1 +#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E +#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F +#endif /* GL_NV_copy_depth_to_color */ + +#ifndef GL_NV_copy_image +#define GL_NV_copy_image 1 + typedef void(APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC)( + GLuint srcName, + GLenum srcTarget, + GLint srcLevel, + GLint srcX, + GLint srcY, + GLint srcZ, + GLuint dstName, + GLenum dstTarget, + GLint dstLevel, + GLint dstX, + GLint dstY, + GLint dstZ, + GLsizei width, + GLsizei height, + GLsizei depth + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glCopyImageSubDataNV( + GLuint srcName, + GLenum srcTarget, + GLint srcLevel, + GLint srcX, + GLint srcY, + GLint srcZ, + GLuint dstName, + GLenum dstTarget, + GLint dstLevel, + GLint dstX, + GLint dstY, + GLint dstZ, + GLsizei width, + GLsizei height, + GLsizei depth + ); +#endif +#endif /* GL_NV_copy_image */ + +#ifndef GL_NV_deep_texture3D +#define GL_NV_deep_texture3D 1 +#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0 +#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1 +#endif /* GL_NV_deep_texture3D */ + +#ifndef GL_NV_depth_buffer_float +#define GL_NV_depth_buffer_float 1 +#define GL_DEPTH_COMPONENT32F_NV 0x8DAB +#define GL_DEPTH32F_STENCIL8_NV 0x8DAC +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD +#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF + typedef void(APIENTRYP PFNGLDEPTHRANGEDNVPROC)(GLdouble zNear, GLdouble zFar); + typedef void(APIENTRYP PFNGLCLEARDEPTHDNVPROC)(GLdouble depth); + typedef void(APIENTRYP PFNGLDEPTHBOUNDSDNVPROC)(GLdouble zmin, GLdouble zmax); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDepthRangedNV(GLdouble zNear, GLdouble zFar); + GLAPI void APIENTRY glClearDepthdNV(GLdouble depth); + GLAPI void APIENTRY glDepthBoundsdNV(GLdouble zmin, GLdouble zmax); +#endif +#endif /* GL_NV_depth_buffer_float */ + +#ifndef GL_NV_depth_clamp +#define GL_NV_depth_clamp 1 +#define GL_DEPTH_CLAMP_NV 0x864F +#endif /* GL_NV_depth_clamp */ + +#ifndef GL_NV_draw_texture +#define GL_NV_draw_texture 1 + typedef void(APIENTRYP PFNGLDRAWTEXTURENVPROC)( + GLuint texture, + GLuint sampler, + GLfloat x0, + GLfloat y0, + GLfloat x1, + GLfloat y1, + GLfloat z, + GLfloat s0, + GLfloat t0, + GLfloat s1, + GLfloat t1 + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawTextureNV( + GLuint texture, + GLuint sampler, + GLfloat x0, + GLfloat y0, + GLfloat x1, + GLfloat y1, + GLfloat z, + GLfloat s0, + GLfloat t0, + GLfloat s1, + GLfloat t1 + ); +#endif +#endif /* GL_NV_draw_texture */ + +#ifndef GL_NV_draw_vulkan_image +#define GL_NV_draw_vulkan_image 1 + typedef void(APIENTRY* GLVULKANPROCNV)(void); + typedef void(APIENTRYP PFNGLDRAWVKIMAGENVPROC)( + GLuint64 vkImage, + GLuint sampler, + GLfloat x0, + GLfloat y0, + GLfloat x1, + GLfloat y1, + GLfloat z, + GLfloat s0, + GLfloat t0, + GLfloat s1, + GLfloat t1 + ); + typedef GLVULKANPROCNV(APIENTRYP PFNGLGETVKPROCADDRNVPROC)(const GLchar* name); + typedef void(APIENTRYP PFNGLWAITVKSEMAPHORENVPROC)(GLuint64 vkSemaphore); + typedef void(APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC)(GLuint64 vkSemaphore); + typedef void(APIENTRYP PFNGLSIGNALVKFENCENVPROC)(GLuint64 vkFence); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawVkImageNV( + GLuint64 vkImage, + GLuint sampler, + GLfloat x0, + GLfloat y0, + GLfloat x1, + GLfloat y1, + GLfloat z, + GLfloat s0, + GLfloat t0, + GLfloat s1, + GLfloat t1 + ); + GLAPI GLVULKANPROCNV APIENTRY glGetVkProcAddrNV(const GLchar* name); + GLAPI void APIENTRY glWaitVkSemaphoreNV(GLuint64 vkSemaphore); + GLAPI void APIENTRY glSignalVkSemaphoreNV(GLuint64 vkSemaphore); + GLAPI void APIENTRY glSignalVkFenceNV(GLuint64 vkFence); +#endif +#endif /* GL_NV_draw_vulkan_image */ + +#ifndef GL_NV_evaluators +#define GL_NV_evaluators 1 +#define GL_EVAL_2D_NV 0x86C0 +#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 +#define GL_MAP_TESSELLATION_NV 0x86C2 +#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 +#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 +#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 +#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 +#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 +#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 +#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 +#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA +#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB +#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC +#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD +#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE +#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF +#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 +#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 +#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 +#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 +#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 +#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 +#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 +#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 + typedef void(APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC)( + GLenum target, + GLuint index, + GLenum type, + GLsizei ustride, + GLsizei vstride, + GLint uorder, + GLint vorder, + GLboolean packed, + const void* points + ); + typedef void(APIENTRYP PFNGLMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC)( + GLenum target, + GLuint index, + GLenum type, + GLsizei ustride, + GLsizei vstride, + GLboolean packed, + void* points + ); + typedef void(APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP + PFNGLGETMAPATTRIBPARAMETERIVNVPROC)(GLenum target, GLuint index, GLenum pname, GLint* params); + typedef void(APIENTRYP + PFNGLGETMAPATTRIBPARAMETERFVNVPROC)(GLenum target, GLuint index, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLEVALMAPSNVPROC)(GLenum target, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMapControlPointsNV( + GLenum target, + GLuint index, + GLenum type, + GLsizei ustride, + GLsizei vstride, + GLint uorder, + GLint vorder, + GLboolean packed, + const void* points + ); + GLAPI void APIENTRY glMapParameterivNV(GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glMapParameterfvNV(GLenum target, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glGetMapControlPointsNV( + GLenum target, + GLuint index, + GLenum type, + GLsizei ustride, + GLsizei vstride, + GLboolean packed, + void* points + ); + GLAPI void APIENTRY glGetMapParameterivNV(GLenum target, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetMapParameterfvNV(GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetMapAttribParameterivNV(GLenum target, GLuint index, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetMapAttribParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glEvalMapsNV(GLenum target, GLenum mode); +#endif +#endif /* GL_NV_evaluators */ + +#ifndef GL_NV_explicit_multisample +#define GL_NV_explicit_multisample 1 +#define GL_SAMPLE_POSITION_NV 0x8E50 +#define GL_SAMPLE_MASK_NV 0x8E51 +#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 +#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 +#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 +#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 +#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 +#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 +#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 +#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 + typedef void(APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC)(GLenum pname, GLuint index, GLfloat* val); + typedef void(APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC)(GLuint index, GLbitfield mask); + typedef void(APIENTRYP PFNGLTEXRENDERBUFFERNVPROC)(GLenum target, GLuint renderbuffer); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGetMultisamplefvNV(GLenum pname, GLuint index, GLfloat* val); + GLAPI void APIENTRY glSampleMaskIndexedNV(GLuint index, GLbitfield mask); + GLAPI void APIENTRY glTexRenderbufferNV(GLenum target, GLuint renderbuffer); +#endif +#endif /* GL_NV_explicit_multisample */ + +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 + typedef void(APIENTRYP PFNGLDELETEFENCESNVPROC)(GLsizei n, const GLuint* fences); + typedef void(APIENTRYP PFNGLGENFENCESNVPROC)(GLsizei n, GLuint* fences); + typedef GLboolean(APIENTRYP PFNGLISFENCENVPROC)(GLuint fence); + typedef GLboolean(APIENTRYP PFNGLTESTFENCENVPROC)(GLuint fence); + typedef void(APIENTRYP PFNGLGETFENCEIVNVPROC)(GLuint fence, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLFINISHFENCENVPROC)(GLuint fence); + typedef void(APIENTRYP PFNGLSETFENCENVPROC)(GLuint fence, GLenum condition); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDeleteFencesNV(GLsizei n, const GLuint* fences); + GLAPI void APIENTRY glGenFencesNV(GLsizei n, GLuint* fences); + GLAPI GLboolean APIENTRY glIsFenceNV(GLuint fence); + GLAPI GLboolean APIENTRY glTestFenceNV(GLuint fence); + GLAPI void APIENTRY glGetFenceivNV(GLuint fence, GLenum pname, GLint* params); + GLAPI void APIENTRY glFinishFenceNV(GLuint fence); + GLAPI void APIENTRY glSetFenceNV(GLuint fence, GLenum condition); +#endif +#endif /* GL_NV_fence */ + +#ifndef GL_NV_fill_rectangle +#define GL_NV_fill_rectangle 1 +#define GL_FILL_RECTANGLE_NV 0x933C +#endif /* GL_NV_fill_rectangle */ + +#ifndef GL_NV_float_buffer +#define GL_NV_float_buffer 1 +#define GL_FLOAT_R_NV 0x8880 +#define GL_FLOAT_RG_NV 0x8881 +#define GL_FLOAT_RGB_NV 0x8882 +#define GL_FLOAT_RGBA_NV 0x8883 +#define GL_FLOAT_R16_NV 0x8884 +#define GL_FLOAT_R32_NV 0x8885 +#define GL_FLOAT_RG16_NV 0x8886 +#define GL_FLOAT_RG32_NV 0x8887 +#define GL_FLOAT_RGB16_NV 0x8888 +#define GL_FLOAT_RGB32_NV 0x8889 +#define GL_FLOAT_RGBA16_NV 0x888A +#define GL_FLOAT_RGBA32_NV 0x888B +#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C +#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D +#define GL_FLOAT_RGBA_MODE_NV 0x888E +#endif /* GL_NV_float_buffer */ + +#ifndef GL_NV_fog_distance +#define GL_NV_fog_distance 1 +#define GL_FOG_DISTANCE_MODE_NV 0x855A +#define GL_EYE_RADIAL_NV 0x855B +#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C +#endif /* GL_NV_fog_distance */ + +#ifndef GL_NV_fragment_coverage_to_color +#define GL_NV_fragment_coverage_to_color 1 +#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD +#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE + typedef void(APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC)(GLuint color); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFragmentCoverageColorNV(GLuint color); +#endif +#endif /* GL_NV_fragment_coverage_to_color */ + +#ifndef GL_NV_fragment_program +#define GL_NV_fragment_program 1 +#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 +#define GL_FRAGMENT_PROGRAM_NV 0x8870 +#define GL_MAX_TEXTURE_COORDS_NV 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 +#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 +#define GL_PROGRAM_ERROR_STRING_NV 0x8874 + typedef void(APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)( + GLuint id, + GLsizei len, + const GLubyte* name, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w + ); + typedef void(APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)( + GLuint id, + GLsizei len, + const GLubyte* name, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)( + GLuint id, + GLsizei len, + const GLubyte* name, + GLdouble x, + GLdouble y, + GLdouble z, + GLdouble w + ); + typedef void(APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)( + GLuint id, + GLsizei len, + const GLubyte* name, + const GLdouble* v + ); + typedef void(APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)( + GLuint id, + GLsizei len, + const GLubyte* name, + GLfloat* params + ); + typedef void(APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)( + GLuint id, + GLsizei len, + const GLubyte* name, + GLdouble* params + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glProgramNamedParameter4fNV( + GLuint id, + GLsizei len, + const GLubyte* name, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w + ); + GLAPI void APIENTRY glProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte* name, const GLfloat* v); + GLAPI void APIENTRY glProgramNamedParameter4dNV( + GLuint id, + GLsizei len, + const GLubyte* name, + GLdouble x, + GLdouble y, + GLdouble z, + GLdouble w + ); + GLAPI void APIENTRY glProgramNamedParameter4dvNV(GLuint id, GLsizei len, const GLubyte* name, const GLdouble* v); + GLAPI void APIENTRY glGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte* name, GLfloat* params); + GLAPI void APIENTRY glGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte* name, GLdouble* params); +#endif +#endif /* GL_NV_fragment_program */ + +#ifndef GL_NV_fragment_program2 +#define GL_NV_fragment_program2 1 +#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 +#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 +#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 +#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 +#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 +#endif /* GL_NV_fragment_program2 */ + +#ifndef GL_NV_fragment_program4 +#define GL_NV_fragment_program4 1 +#endif /* GL_NV_fragment_program4 */ + +#ifndef GL_NV_fragment_program_option +#define GL_NV_fragment_program_option 1 +#endif /* GL_NV_fragment_program_option */ + +#ifndef GL_NV_fragment_shader_barycentric +#define GL_NV_fragment_shader_barycentric 1 +#endif /* GL_NV_fragment_shader_barycentric */ + +#ifndef GL_NV_fragment_shader_interlock +#define GL_NV_fragment_shader_interlock 1 +#endif /* GL_NV_fragment_shader_interlock */ + +#ifndef GL_NV_framebuffer_mixed_samples +#define GL_NV_framebuffer_mixed_samples 1 +#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331 +#define GL_COLOR_SAMPLES_NV 0x8E20 +#define GL_DEPTH_SAMPLES_NV 0x932D +#define GL_STENCIL_SAMPLES_NV 0x932E +#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F +#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330 +#define GL_COVERAGE_MODULATION_NV 0x9332 +#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 + typedef void(APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC)(GLsizei n, const GLfloat* v); + typedef void(APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC)(GLsizei bufSize, GLfloat* v); + typedef void(APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC)(GLenum components); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glCoverageModulationTableNV(GLsizei n, const GLfloat* v); + GLAPI void APIENTRY glGetCoverageModulationTableNV(GLsizei bufSize, GLfloat* v); + GLAPI void APIENTRY glCoverageModulationNV(GLenum components); +#endif +#endif /* GL_NV_framebuffer_mixed_samples */ + +#ifndef GL_NV_framebuffer_multisample_coverage +#define GL_NV_framebuffer_multisample_coverage 1 +#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB +#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 +#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 +#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 + typedef void(APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)( + GLenum target, + GLsizei coverageSamples, + GLsizei colorSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV( + GLenum target, + GLsizei coverageSamples, + GLsizei colorSamples, + GLenum internalformat, + GLsizei width, + GLsizei height + ); +#endif +#endif /* GL_NV_framebuffer_multisample_coverage */ + +#ifndef GL_NV_geometry_program4 +#define GL_NV_geometry_program4 1 +#define GL_GEOMETRY_PROGRAM_NV 0x8C26 +#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 +#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 + typedef void(APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC)(GLenum target, GLint limit); + typedef void(APIENTRYP + PFNGLFRAMEBUFFERTEXTUREEXTPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)( + GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLenum face + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glProgramVertexLimitNV(GLenum target, GLint limit); + GLAPI void APIENTRY glFramebufferTextureEXT(GLenum target, GLenum attachment, GLuint texture, GLint level); + GLAPI void APIENTRY + glFramebufferTextureFaceEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#endif +#endif /* GL_NV_geometry_program4 */ + +#ifndef GL_NV_geometry_shader4 +#define GL_NV_geometry_shader4 1 +#endif /* GL_NV_geometry_shader4 */ + +#ifndef GL_NV_geometry_shader_passthrough +#define GL_NV_geometry_shader_passthrough 1 +#endif /* GL_NV_geometry_shader_passthrough */ + +#ifndef GL_NV_gpu_multicast +#define GL_NV_gpu_multicast 1 +#define GL_PER_GPU_STORAGE_BIT_NV 0x0800 +#define GL_MULTICAST_GPUS_NV 0x92BA +#define GL_RENDER_GPU_MASK_NV 0x9558 +#define GL_PER_GPU_STORAGE_NV 0x9548 +#define GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9549 + typedef void(APIENTRYP PFNGLRENDERGPUMASKNVPROC)(GLbitfield mask); + typedef void(APIENTRYP PFNGLMULTICASTBUFFERSUBDATANVPROC)( + GLbitfield gpuMask, + GLuint buffer, + GLintptr offset, + GLsizeiptr size, + const void* data + ); + typedef void(APIENTRYP PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC)( + GLuint readGpu, + GLbitfield writeGpuMask, + GLuint readBuffer, + GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLMULTICASTCOPYIMAGESUBDATANVPROC)( + GLuint srcGpu, + GLbitfield dstGpuMask, + GLuint srcName, + GLenum srcTarget, + GLint srcLevel, + GLint srcX, + GLint srcY, + GLint srcZ, + GLuint dstName, + GLenum dstTarget, + GLint dstLevel, + GLint dstX, + GLint dstY, + GLint dstZ, + GLsizei srcWidth, + GLsizei srcHeight, + GLsizei srcDepth + ); + typedef void(APIENTRYP PFNGLMULTICASTBLITFRAMEBUFFERNVPROC)( + GLuint srcGpu, + GLuint dstGpu, + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter + ); + typedef void(APIENTRYP PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)( + GLuint gpu, + GLuint framebuffer, + GLuint start, + GLsizei count, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLMULTICASTBARRIERNVPROC)(void); + typedef void(APIENTRYP PFNGLMULTICASTWAITSYNCNVPROC)(GLuint signalGpu, GLbitfield waitGpuMask); + typedef void(APIENTRYP PFNGLMULTICASTGETQUERYOBJECTIVNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLuint* params); + typedef void(APIENTRYP + PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLint64* params); + typedef void(APIENTRYP + PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC)(GLuint gpu, GLuint id, GLenum pname, GLuint64* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glRenderGpuMaskNV(GLbitfield mask); + GLAPI void APIENTRY + glMulticastBufferSubDataNV(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void* data); + GLAPI void APIENTRY glMulticastCopyBufferSubDataNV( + GLuint readGpu, + GLbitfield writeGpuMask, + GLuint readBuffer, + GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size + ); + GLAPI void APIENTRY glMulticastCopyImageSubDataNV( + GLuint srcGpu, + GLbitfield dstGpuMask, + GLuint srcName, + GLenum srcTarget, + GLint srcLevel, + GLint srcX, + GLint srcY, + GLint srcZ, + GLuint dstName, + GLenum dstTarget, + GLint dstLevel, + GLint dstX, + GLint dstY, + GLint dstZ, + GLsizei srcWidth, + GLsizei srcHeight, + GLsizei srcDepth + ); + GLAPI void APIENTRY glMulticastBlitFramebufferNV( + GLuint srcGpu, + GLuint dstGpu, + GLint srcX0, + GLint srcY0, + GLint srcX1, + GLint srcY1, + GLint dstX0, + GLint dstY0, + GLint dstX1, + GLint dstY1, + GLbitfield mask, + GLenum filter + ); + GLAPI void APIENTRY glMulticastFramebufferSampleLocationsfvNV( + GLuint gpu, + GLuint framebuffer, + GLuint start, + GLsizei count, + const GLfloat* v + ); + GLAPI void APIENTRY glMulticastBarrierNV(void); + GLAPI void APIENTRY glMulticastWaitSyncNV(GLuint signalGpu, GLbitfield waitGpuMask); + GLAPI void APIENTRY glMulticastGetQueryObjectivNV(GLuint gpu, GLuint id, GLenum pname, GLint* params); + GLAPI void APIENTRY glMulticastGetQueryObjectuivNV(GLuint gpu, GLuint id, GLenum pname, GLuint* params); + GLAPI void APIENTRY glMulticastGetQueryObjecti64vNV(GLuint gpu, GLuint id, GLenum pname, GLint64* params); + GLAPI void APIENTRY glMulticastGetQueryObjectui64vNV(GLuint gpu, GLuint id, GLenum pname, GLuint64* params); +#endif +#endif /* GL_NV_gpu_multicast */ + +#ifndef GL_NV_gpu_program4 +#define GL_NV_gpu_program4 1 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 +#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 +#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 +#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 +#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 +#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 +#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 + typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC)( + GLenum target, + GLuint index, + GLint x, + GLint y, + GLint z, + GLint w + ); + typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)(GLenum target, GLuint index, const GLint* params); + typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)( + GLenum target, + GLuint index, + GLsizei count, + const GLint* params + ); + typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)( + GLenum target, + GLuint index, + GLuint x, + GLuint y, + GLuint z, + GLuint w + ); + typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, const GLuint* params); + typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)( + GLenum target, + GLuint index, + GLsizei count, + const GLuint* params + ); + typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC)( + GLenum target, + GLuint index, + GLint x, + GLint y, + GLint z, + GLint w + ); + typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC)(GLenum target, GLuint index, const GLint* params); + typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)( + GLenum target, + GLuint index, + GLsizei count, + const GLint* params + ); + typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC)( + GLenum target, + GLuint index, + GLuint x, + GLuint y, + GLuint z, + GLuint w + ); + typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, const GLuint* params); + typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)( + GLenum target, + GLuint index, + GLsizei count, + const GLuint* params + ); + typedef void(APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC)(GLenum target, GLuint index, GLint* params); + typedef void(APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC)(GLenum target, GLuint index, GLuint* params); + typedef void(APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC)(GLenum target, GLuint index, GLint* params); + typedef void(APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC)(GLenum target, GLuint index, GLuint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glProgramLocalParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); + GLAPI void APIENTRY glProgramLocalParameterI4ivNV(GLenum target, GLuint index, const GLint* params); + GLAPI void APIENTRY glProgramLocalParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint* params); + GLAPI void APIENTRY + glProgramLocalParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + GLAPI void APIENTRY glProgramLocalParameterI4uivNV(GLenum target, GLuint index, const GLuint* params); + GLAPI void APIENTRY + glProgramLocalParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint* params); + GLAPI void APIENTRY glProgramEnvParameterI4iNV(GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); + GLAPI void APIENTRY glProgramEnvParameterI4ivNV(GLenum target, GLuint index, const GLint* params); + GLAPI void APIENTRY glProgramEnvParametersI4ivNV(GLenum target, GLuint index, GLsizei count, const GLint* params); + GLAPI void APIENTRY + glProgramEnvParameterI4uiNV(GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); + GLAPI void APIENTRY glProgramEnvParameterI4uivNV(GLenum target, GLuint index, const GLuint* params); + GLAPI void APIENTRY glProgramEnvParametersI4uivNV(GLenum target, GLuint index, GLsizei count, const GLuint* params); + GLAPI void APIENTRY glGetProgramLocalParameterIivNV(GLenum target, GLuint index, GLint* params); + GLAPI void APIENTRY glGetProgramLocalParameterIuivNV(GLenum target, GLuint index, GLuint* params); + GLAPI void APIENTRY glGetProgramEnvParameterIivNV(GLenum target, GLuint index, GLint* params); + GLAPI void APIENTRY glGetProgramEnvParameterIuivNV(GLenum target, GLuint index, GLuint* params); +#endif +#endif /* GL_NV_gpu_program4 */ + +#ifndef GL_NV_gpu_program5 +#define GL_NV_gpu_program5 1 +#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C +#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F +#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44 +#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45 + typedef void(APIENTRYP + PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC)(GLenum target, GLsizei count, const GLuint* params); + typedef void(APIENTRYP PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC)(GLenum target, GLuint index, GLuint* param); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glProgramSubroutineParametersuivNV(GLenum target, GLsizei count, const GLuint* params); + GLAPI void APIENTRY glGetProgramSubroutineParameteruivNV(GLenum target, GLuint index, GLuint* param); +#endif +#endif /* GL_NV_gpu_program5 */ + +#ifndef GL_NV_gpu_program5_mem_extended +#define GL_NV_gpu_program5_mem_extended 1 +#endif /* GL_NV_gpu_program5_mem_extended */ + +#ifndef GL_NV_gpu_shader5 +#define GL_NV_gpu_shader5 1 +#endif /* GL_NV_gpu_shader5 */ + +#ifndef GL_NV_half_float +#define GL_NV_half_float 1 + typedef unsigned short GLhalfNV; +#define GL_HALF_FLOAT_NV 0x140B + typedef void(APIENTRYP PFNGLVERTEX2HNVPROC)(GLhalfNV x, GLhalfNV y); + typedef void(APIENTRYP PFNGLVERTEX2HVNVPROC)(const GLhalfNV* v); + typedef void(APIENTRYP PFNGLVERTEX3HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z); + typedef void(APIENTRYP PFNGLVERTEX3HVNVPROC)(const GLhalfNV* v); + typedef void(APIENTRYP PFNGLVERTEX4HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); + typedef void(APIENTRYP PFNGLVERTEX4HVNVPROC)(const GLhalfNV* v); + typedef void(APIENTRYP PFNGLNORMAL3HNVPROC)(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); + typedef void(APIENTRYP PFNGLNORMAL3HVNVPROC)(const GLhalfNV* v); + typedef void(APIENTRYP PFNGLCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue); + typedef void(APIENTRYP PFNGLCOLOR3HVNVPROC)(const GLhalfNV* v); + typedef void(APIENTRYP PFNGLCOLOR4HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); + typedef void(APIENTRYP PFNGLCOLOR4HVNVPROC)(const GLhalfNV* v); + typedef void(APIENTRYP PFNGLTEXCOORD1HNVPROC)(GLhalfNV s); + typedef void(APIENTRYP PFNGLTEXCOORD1HVNVPROC)(const GLhalfNV* v); + typedef void(APIENTRYP PFNGLTEXCOORD2HNVPROC)(GLhalfNV s, GLhalfNV t); + typedef void(APIENTRYP PFNGLTEXCOORD2HVNVPROC)(const GLhalfNV* v); + typedef void(APIENTRYP PFNGLTEXCOORD3HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r); + typedef void(APIENTRYP PFNGLTEXCOORD3HVNVPROC)(const GLhalfNV* v); + typedef void(APIENTRYP PFNGLTEXCOORD4HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); + typedef void(APIENTRYP PFNGLTEXCOORD4HVNVPROC)(const GLhalfNV* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1HNVPROC)(GLenum target, GLhalfNV s); + typedef void(APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC)(GLenum target, const GLhalfNV* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t); + typedef void(APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC)(GLenum target, const GLhalfNV* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); + typedef void(APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC)(GLenum target, const GLhalfNV* v); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); + typedef void(APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC)(GLenum target, const GLhalfNV* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1HNVPROC)(GLuint index, GLhalfNV x); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC)(GLuint index, const GLhalfNV* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC)(GLuint index, const GLhalfNV* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC)(GLuint index, const GLhalfNV* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC)(GLuint index, const GLhalfNV* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV* v); + typedef void(APIENTRYP PFNGLFOGCOORDHNVPROC)(GLhalfNV fog); + typedef void(APIENTRYP PFNGLFOGCOORDHVNVPROC)(const GLhalfNV* fog); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue); + typedef void(APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC)(const GLhalfNV* v); + typedef void(APIENTRYP PFNGLVERTEXWEIGHTHNVPROC)(GLhalfNV weight); + typedef void(APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC)(const GLhalfNV* weight); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glVertex2hNV(GLhalfNV x, GLhalfNV y); + GLAPI void APIENTRY glVertex2hvNV(const GLhalfNV* v); + GLAPI void APIENTRY glVertex3hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z); + GLAPI void APIENTRY glVertex3hvNV(const GLhalfNV* v); + GLAPI void APIENTRY glVertex4hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); + GLAPI void APIENTRY glVertex4hvNV(const GLhalfNV* v); + GLAPI void APIENTRY glNormal3hNV(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); + GLAPI void APIENTRY glNormal3hvNV(const GLhalfNV* v); + GLAPI void APIENTRY glColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue); + GLAPI void APIENTRY glColor3hvNV(const GLhalfNV* v); + GLAPI void APIENTRY glColor4hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); + GLAPI void APIENTRY glColor4hvNV(const GLhalfNV* v); + GLAPI void APIENTRY glTexCoord1hNV(GLhalfNV s); + GLAPI void APIENTRY glTexCoord1hvNV(const GLhalfNV* v); + GLAPI void APIENTRY glTexCoord2hNV(GLhalfNV s, GLhalfNV t); + GLAPI void APIENTRY glTexCoord2hvNV(const GLhalfNV* v); + GLAPI void APIENTRY glTexCoord3hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r); + GLAPI void APIENTRY glTexCoord3hvNV(const GLhalfNV* v); + GLAPI void APIENTRY glTexCoord4hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); + GLAPI void APIENTRY glTexCoord4hvNV(const GLhalfNV* v); + GLAPI void APIENTRY glMultiTexCoord1hNV(GLenum target, GLhalfNV s); + GLAPI void APIENTRY glMultiTexCoord1hvNV(GLenum target, const GLhalfNV* v); + GLAPI void APIENTRY glMultiTexCoord2hNV(GLenum target, GLhalfNV s, GLhalfNV t); + GLAPI void APIENTRY glMultiTexCoord2hvNV(GLenum target, const GLhalfNV* v); + GLAPI void APIENTRY glMultiTexCoord3hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); + GLAPI void APIENTRY glMultiTexCoord3hvNV(GLenum target, const GLhalfNV* v); + GLAPI void APIENTRY glMultiTexCoord4hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); + GLAPI void APIENTRY glMultiTexCoord4hvNV(GLenum target, const GLhalfNV* v); + GLAPI void APIENTRY glVertexAttrib1hNV(GLuint index, GLhalfNV x); + GLAPI void APIENTRY glVertexAttrib1hvNV(GLuint index, const GLhalfNV* v); + GLAPI void APIENTRY glVertexAttrib2hNV(GLuint index, GLhalfNV x, GLhalfNV y); + GLAPI void APIENTRY glVertexAttrib2hvNV(GLuint index, const GLhalfNV* v); + GLAPI void APIENTRY glVertexAttrib3hNV(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); + GLAPI void APIENTRY glVertexAttrib3hvNV(GLuint index, const GLhalfNV* v); + GLAPI void APIENTRY glVertexAttrib4hNV(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); + GLAPI void APIENTRY glVertexAttrib4hvNV(GLuint index, const GLhalfNV* v); + GLAPI void APIENTRY glVertexAttribs1hvNV(GLuint index, GLsizei n, const GLhalfNV* v); + GLAPI void APIENTRY glVertexAttribs2hvNV(GLuint index, GLsizei n, const GLhalfNV* v); + GLAPI void APIENTRY glVertexAttribs3hvNV(GLuint index, GLsizei n, const GLhalfNV* v); + GLAPI void APIENTRY glVertexAttribs4hvNV(GLuint index, GLsizei n, const GLhalfNV* v); + GLAPI void APIENTRY glFogCoordhNV(GLhalfNV fog); + GLAPI void APIENTRY glFogCoordhvNV(const GLhalfNV* fog); + GLAPI void APIENTRY glSecondaryColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue); + GLAPI void APIENTRY glSecondaryColor3hvNV(const GLhalfNV* v); + GLAPI void APIENTRY glVertexWeighthNV(GLhalfNV weight); + GLAPI void APIENTRY glVertexWeighthvNV(const GLhalfNV* weight); +#endif +#endif /* GL_NV_half_float */ + +#ifndef GL_NV_internalformat_sample_query +#define GL_NV_internalformat_sample_query 1 +#define GL_MULTISAMPLES_NV 0x9371 +#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372 +#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373 +#define GL_CONFORMANT_NV 0x9374 + typedef void(APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)( + GLenum target, + GLenum internalformat, + GLsizei samples, + GLenum pname, + GLsizei count, + GLint* params + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGetInternalformatSampleivNV( + GLenum target, + GLenum internalformat, + GLsizei samples, + GLenum pname, + GLsizei count, + GLint* params + ); +#endif +#endif /* GL_NV_internalformat_sample_query */ + +#ifndef GL_NV_light_max_exponent +#define GL_NV_light_max_exponent 1 +#define GL_MAX_SHININESS_NV 0x8504 +#define GL_MAX_SPOT_EXPONENT_NV 0x8505 +#endif /* GL_NV_light_max_exponent */ + +#ifndef GL_NV_memory_attachment +#define GL_NV_memory_attachment 1 +#define GL_ATTACHED_MEMORY_OBJECT_NV 0x95A4 +#define GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5 +#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6 +#define GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7 +#define GL_MEMORY_ATTACHABLE_NV 0x95A8 +#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9 +#define GL_DETACHED_TEXTURES_NV 0x95AA +#define GL_DETACHED_BUFFERS_NV 0x95AB +#define GL_MAX_DETACHED_TEXTURES_NV 0x95AC +#define GL_MAX_DETACHED_BUFFERS_NV 0x95AD + typedef void(APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC)( + GLuint memory, + GLenum pname, + GLint first, + GLsizei count, + GLuint* params + ); + typedef void(APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC)(GLuint memory, GLenum pname); + typedef void(APIENTRYP PFNGLTEXATTACHMEMORYNVPROC)(GLenum target, GLuint memory, GLuint64 offset); + typedef void(APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC)(GLenum target, GLuint memory, GLuint64 offset); + typedef void(APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC)(GLuint texture, GLuint memory, GLuint64 offset); + typedef void(APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC)(GLuint buffer, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glGetMemoryObjectDetachedResourcesuivNV(GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint* params); + GLAPI void APIENTRY glResetMemoryObjectParameterNV(GLuint memory, GLenum pname); + GLAPI void APIENTRY glTexAttachMemoryNV(GLenum target, GLuint memory, GLuint64 offset); + GLAPI void APIENTRY glBufferAttachMemoryNV(GLenum target, GLuint memory, GLuint64 offset); + GLAPI void APIENTRY glTextureAttachMemoryNV(GLuint texture, GLuint memory, GLuint64 offset); + GLAPI void APIENTRY glNamedBufferAttachMemoryNV(GLuint buffer, GLuint memory, GLuint64 offset); +#endif +#endif /* GL_NV_memory_attachment */ + +#ifndef GL_NV_memory_object_sparse +#define GL_NV_memory_object_sparse 1 + typedef void(APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC)( + GLenum target, + GLintptr offset, + GLsizeiptr size, + GLuint memory, + GLuint64 memOffset, + GLboolean commit + ); + typedef void(APIENTRYP PFNGLTEXPAGECOMMITMENTMEMNVPROC)( + GLenum target, + GLint layer, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLuint memory, + GLuint64 offset, + GLboolean commit + ); + typedef void(APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC)( + GLuint buffer, + GLintptr offset, + GLsizeiptr size, + GLuint memory, + GLuint64 memOffset, + GLboolean commit + ); + typedef void(APIENTRYP PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC)( + GLuint texture, + GLint layer, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLuint memory, + GLuint64 offset, + GLboolean commit + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBufferPageCommitmentMemNV( + GLenum target, + GLintptr offset, + GLsizeiptr size, + GLuint memory, + GLuint64 memOffset, + GLboolean commit + ); + GLAPI void APIENTRY glTexPageCommitmentMemNV( + GLenum target, + GLint layer, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLuint memory, + GLuint64 offset, + GLboolean commit + ); + GLAPI void APIENTRY glNamedBufferPageCommitmentMemNV( + GLuint buffer, + GLintptr offset, + GLsizeiptr size, + GLuint memory, + GLuint64 memOffset, + GLboolean commit + ); + GLAPI void APIENTRY glTexturePageCommitmentMemNV( + GLuint texture, + GLint layer, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLuint memory, + GLuint64 offset, + GLboolean commit + ); +#endif +#endif /* GL_NV_memory_object_sparse */ + +#ifndef GL_NV_mesh_shader +#define GL_NV_mesh_shader 1 +#define GL_MESH_SHADER_NV 0x9559 +#define GL_TASK_SHADER_NV 0x955A +#define GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60 +#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61 +#define GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62 +#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63 +#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64 +#define GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65 +#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66 +#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67 +#define GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68 +#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69 +#define GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A +#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B +#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C +#define GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D +#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E +#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F +#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2 +#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3 +#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536 +#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537 +#define GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538 +#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539 +#define GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A +#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D +#define GL_MAX_MESH_VIEWS_NV 0x9557 +#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF +#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543 +#define GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B +#define GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C +#define GL_MESH_WORK_GROUP_SIZE_NV 0x953E +#define GL_TASK_WORK_GROUP_SIZE_NV 0x953F +#define GL_MESH_VERTICES_OUT_NV 0x9579 +#define GL_MESH_PRIMITIVES_OUT_NV 0x957A +#define GL_MESH_OUTPUT_TYPE_NV 0x957B +#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D +#define GL_REFERENCED_BY_MESH_SHADER_NV 0x95A0 +#define GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1 +#define GL_MESH_SHADER_BIT_NV 0x00000040 +#define GL_TASK_SHADER_BIT_NV 0x00000080 +#define GL_MESH_SUBROUTINE_NV 0x957C +#define GL_TASK_SUBROUTINE_NV 0x957D +#define GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E +#define GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F + typedef void(APIENTRYP PFNGLDRAWMESHTASKSNVPROC)(GLuint first, GLuint count); + typedef void(APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect); + typedef void(APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect, GLsizei drawcount, GLsizei stride); + typedef void(APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC)( + GLintptr indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawMeshTasksNV(GLuint first, GLuint count); + GLAPI void APIENTRY glDrawMeshTasksIndirectNV(GLintptr indirect); + GLAPI void APIENTRY glMultiDrawMeshTasksIndirectNV(GLintptr indirect, GLsizei drawcount, GLsizei stride); + GLAPI void APIENTRY + glMultiDrawMeshTasksIndirectCountNV(GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_NV_mesh_shader */ + +#ifndef GL_NV_multisample_coverage +#define GL_NV_multisample_coverage 1 +#endif /* GL_NV_multisample_coverage */ + +#ifndef GL_NV_multisample_filter_hint +#define GL_NV_multisample_filter_hint 1 +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 +#endif /* GL_NV_multisample_filter_hint */ + +#ifndef GL_NV_occlusion_query +#define GL_NV_occlusion_query 1 +#define GL_PIXEL_COUNTER_BITS_NV 0x8864 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 +#define GL_PIXEL_COUNT_NV 0x8866 +#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 + typedef void(APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC)(GLsizei n, GLuint* ids); + typedef void(APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC)(GLsizei n, const GLuint* ids); + typedef GLboolean(APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC)(GLuint id); + typedef void(APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC)(GLuint id); + typedef void(APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC)(void); + typedef void(APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC)(GLuint id, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC)(GLuint id, GLenum pname, GLuint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGenOcclusionQueriesNV(GLsizei n, GLuint* ids); + GLAPI void APIENTRY glDeleteOcclusionQueriesNV(GLsizei n, const GLuint* ids); + GLAPI GLboolean APIENTRY glIsOcclusionQueryNV(GLuint id); + GLAPI void APIENTRY glBeginOcclusionQueryNV(GLuint id); + GLAPI void APIENTRY glEndOcclusionQueryNV(void); + GLAPI void APIENTRY glGetOcclusionQueryivNV(GLuint id, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetOcclusionQueryuivNV(GLuint id, GLenum pname, GLuint* params); +#endif +#endif /* GL_NV_occlusion_query */ + +#ifndef GL_NV_packed_depth_stencil +#define GL_NV_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_NV 0x84F9 +#define GL_UNSIGNED_INT_24_8_NV 0x84FA +#endif /* GL_NV_packed_depth_stencil */ + +#ifndef GL_NV_parameter_buffer_object +#define GL_NV_parameter_buffer_object 1 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 +#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 +#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 +#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 + typedef void(APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)( + GLenum target, + GLuint bindingIndex, + GLuint wordIndex, + GLsizei count, + const GLfloat* params + ); + typedef void(APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)( + GLenum target, + GLuint bindingIndex, + GLuint wordIndex, + GLsizei count, + const GLint* params + ); + typedef void(APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)( + GLenum target, + GLuint bindingIndex, + GLuint wordIndex, + GLsizei count, + const GLuint* params + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glProgramBufferParametersfvNV( + GLenum target, + GLuint bindingIndex, + GLuint wordIndex, + GLsizei count, + const GLfloat* params + ); + GLAPI void APIENTRY glProgramBufferParametersIivNV( + GLenum target, + GLuint bindingIndex, + GLuint wordIndex, + GLsizei count, + const GLint* params + ); + GLAPI void APIENTRY glProgramBufferParametersIuivNV( + GLenum target, + GLuint bindingIndex, + GLuint wordIndex, + GLsizei count, + const GLuint* params + ); +#endif +#endif /* GL_NV_parameter_buffer_object */ + +#ifndef GL_NV_parameter_buffer_object2 +#define GL_NV_parameter_buffer_object2 1 +#endif /* GL_NV_parameter_buffer_object2 */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +#define GL_PATH_FORMAT_SVG_NV 0x9070 +#define GL_PATH_FORMAT_PS_NV 0x9071 +#define GL_STANDARD_FONT_NAME_NV 0x9072 +#define GL_SYSTEM_FONT_NAME_NV 0x9073 +#define GL_FILE_NAME_NV 0x9074 +#define GL_PATH_STROKE_WIDTH_NV 0x9075 +#define GL_PATH_END_CAPS_NV 0x9076 +#define GL_PATH_INITIAL_END_CAP_NV 0x9077 +#define GL_PATH_TERMINAL_END_CAP_NV 0x9078 +#define GL_PATH_JOIN_STYLE_NV 0x9079 +#define GL_PATH_MITER_LIMIT_NV 0x907A +#define GL_PATH_DASH_CAPS_NV 0x907B +#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C +#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D +#define GL_PATH_DASH_OFFSET_NV 0x907E +#define GL_PATH_CLIENT_LENGTH_NV 0x907F +#define GL_PATH_FILL_MODE_NV 0x9080 +#define GL_PATH_FILL_MASK_NV 0x9081 +#define GL_PATH_FILL_COVER_MODE_NV 0x9082 +#define GL_PATH_STROKE_COVER_MODE_NV 0x9083 +#define GL_PATH_STROKE_MASK_NV 0x9084 +#define GL_COUNT_UP_NV 0x9088 +#define GL_COUNT_DOWN_NV 0x9089 +#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A +#define GL_CONVEX_HULL_NV 0x908B +#define GL_BOUNDING_BOX_NV 0x908D +#define GL_TRANSLATE_X_NV 0x908E +#define GL_TRANSLATE_Y_NV 0x908F +#define GL_TRANSLATE_2D_NV 0x9090 +#define GL_TRANSLATE_3D_NV 0x9091 +#define GL_AFFINE_2D_NV 0x9092 +#define GL_AFFINE_3D_NV 0x9094 +#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 +#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 +#define GL_UTF8_NV 0x909A +#define GL_UTF16_NV 0x909B +#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C +#define GL_PATH_COMMAND_COUNT_NV 0x909D +#define GL_PATH_COORD_COUNT_NV 0x909E +#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F +#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 +#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 +#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 +#define GL_SQUARE_NV 0x90A3 +#define GL_ROUND_NV 0x90A4 +#define GL_TRIANGULAR_NV 0x90A5 +#define GL_BEVEL_NV 0x90A6 +#define GL_MITER_REVERT_NV 0x90A7 +#define GL_MITER_TRUNCATE_NV 0x90A8 +#define GL_SKIP_MISSING_GLYPH_NV 0x90A9 +#define GL_USE_MISSING_GLYPH_NV 0x90AA +#define GL_PATH_ERROR_POSITION_NV 0x90AB +#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD +#define GL_ADJACENT_PAIRS_NV 0x90AE +#define GL_FIRST_TO_REST_NV 0x90AF +#define GL_PATH_GEN_MODE_NV 0x90B0 +#define GL_PATH_GEN_COEFF_NV 0x90B1 +#define GL_PATH_GEN_COMPONENTS_NV 0x90B3 +#define GL_PATH_STENCIL_FUNC_NV 0x90B7 +#define GL_PATH_STENCIL_REF_NV 0x90B8 +#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 +#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD +#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE +#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF +#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#define GL_CLOSE_PATH_NV 0x00 +#define GL_MOVE_TO_NV 0x02 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_LINE_TO_NV 0x04 +#define GL_RELATIVE_LINE_TO_NV 0x05 +#define GL_HORIZONTAL_LINE_TO_NV 0x06 +#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 +#define GL_VERTICAL_LINE_TO_NV 0x08 +#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 +#define GL_QUADRATIC_CURVE_TO_NV 0x0A +#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B +#define GL_CUBIC_CURVE_TO_NV 0x0C +#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D +#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E +#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F +#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 +#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 +#define GL_SMALL_CCW_ARC_TO_NV 0x12 +#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 +#define GL_SMALL_CW_ARC_TO_NV 0x14 +#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 +#define GL_LARGE_CCW_ARC_TO_NV 0x16 +#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 +#define GL_LARGE_CW_ARC_TO_NV 0x18 +#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 +#define GL_RESTART_PATH_NV 0xF0 +#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 +#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 +#define GL_RECT_NV 0xF6 +#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 +#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA +#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC +#define GL_ARC_TO_NV 0xFE +#define GL_RELATIVE_ARC_TO_NV 0xFF +#define GL_BOLD_BIT_NV 0x01 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 +#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 +#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 +#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 +#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100 +#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000 +#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000 +#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000 +#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000 +#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000 +#define GL_FONT_ASCENDER_BIT_NV 0x00200000 +#define GL_FONT_DESCENDER_BIT_NV 0x00400000 +#define GL_FONT_HEIGHT_BIT_NV 0x00800000 +#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000 +#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000 +#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000 +#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000 +#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000 +#define GL_ROUNDED_RECT_NV 0xE8 +#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9 +#define GL_ROUNDED_RECT2_NV 0xEA +#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB +#define GL_ROUNDED_RECT4_NV 0xEC +#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED +#define GL_ROUNDED_RECT8_NV 0xEE +#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF +#define GL_RELATIVE_RECT_NV 0xF7 +#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368 +#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369 +#define GL_FONT_UNAVAILABLE_NV 0x936A +#define GL_FONT_UNINTELLIGIBLE_NV 0x936B +#define GL_CONIC_CURVE_TO_NV 0x1A +#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B +#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000 +#define GL_STANDARD_FONT_FORMAT_NV 0x936C +#define GL_2_BYTES_NV 0x1407 +#define GL_3_BYTES_NV 0x1408 +#define GL_4_BYTES_NV 0x1409 +#define GL_EYE_LINEAR_NV 0x2400 +#define GL_OBJECT_LINEAR_NV 0x2401 +#define GL_CONSTANT_NV 0x8576 +#define GL_PATH_FOG_GEN_MODE_NV 0x90AC +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_SECONDARY_COLOR_NV 0x852D +#define GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2 +#define GL_PATH_PROJECTION_NV 0x1701 +#define GL_PATH_MODELVIEW_NV 0x1700 +#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3 +#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6 +#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36 +#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3 +#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4 +#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7 +#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38 +#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4 +#define GL_FRAGMENT_INPUT_NV 0x936D + typedef GLuint(APIENTRYP PFNGLGENPATHSNVPROC)(GLsizei range); + typedef void(APIENTRYP PFNGLDELETEPATHSNVPROC)(GLuint path, GLsizei range); + typedef GLboolean(APIENTRYP PFNGLISPATHNVPROC)(GLuint path); + typedef void(APIENTRYP PFNGLPATHCOMMANDSNVPROC)( + GLuint path, + GLsizei numCommands, + const GLubyte* commands, + GLsizei numCoords, + GLenum coordType, + const void* coords + ); + typedef void(APIENTRYP PFNGLPATHCOORDSNVPROC)(GLuint path, GLsizei numCoords, GLenum coordType, const void* coords); + typedef void(APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC)( + GLuint path, + GLsizei commandStart, + GLsizei commandsToDelete, + GLsizei numCommands, + const GLubyte* commands, + GLsizei numCoords, + GLenum coordType, + const void* coords + ); + typedef void(APIENTRYP PFNGLPATHSUBCOORDSNVPROC)( + GLuint path, + GLsizei coordStart, + GLsizei numCoords, + GLenum coordType, + const void* coords + ); + typedef void(APIENTRYP PFNGLPATHSTRINGNVPROC)(GLuint path, GLenum format, GLsizei length, const void* pathString); + typedef void(APIENTRYP PFNGLPATHGLYPHSNVPROC)( + GLuint firstPathName, + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLsizei numGlyphs, + GLenum type, + const void* charcodes, + GLenum handleMissingGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + typedef void(APIENTRYP PFNGLPATHGLYPHRANGENVPROC)( + GLuint firstPathName, + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLuint firstGlyph, + GLsizei numGlyphs, + GLenum handleMissingGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + typedef void(APIENTRYP PFNGLWEIGHTPATHSNVPROC)( + GLuint resultPath, + GLsizei numPaths, + const GLuint* paths, + const GLfloat* weights + ); + typedef void(APIENTRYP PFNGLCOPYPATHNVPROC)(GLuint resultPath, GLuint srcPath); + typedef void(APIENTRYP PFNGLINTERPOLATEPATHSNVPROC)(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); + typedef void(APIENTRYP PFNGLTRANSFORMPATHNVPROC)( + GLuint resultPath, + GLuint srcPath, + GLenum transformType, + const GLfloat* transformValues + ); + typedef void(APIENTRYP PFNGLPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, const GLint* value); + typedef void(APIENTRYP PFNGLPATHPARAMETERINVPROC)(GLuint path, GLenum pname, GLint value); + typedef void(APIENTRYP PFNGLPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, const GLfloat* value); + typedef void(APIENTRYP PFNGLPATHPARAMETERFNVPROC)(GLuint path, GLenum pname, GLfloat value); + typedef void(APIENTRYP PFNGLPATHDASHARRAYNVPROC)(GLuint path, GLsizei dashCount, const GLfloat* dashArray); + typedef void(APIENTRYP PFNGLPATHSTENCILFUNCNVPROC)(GLenum func, GLint ref, GLuint mask); + typedef void(APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC)(GLfloat factor, GLfloat units); + typedef void(APIENTRYP PFNGLSTENCILFILLPATHNVPROC)(GLuint path, GLenum fillMode, GLuint mask); + typedef void(APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC)(GLuint path, GLint reference, GLuint mask); + typedef void(APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC)( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum fillMode, + GLuint mask, + GLenum transformType, + const GLfloat* transformValues + ); + typedef void(APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLint reference, + GLuint mask, + GLenum transformType, + const GLfloat* transformValues + ); + typedef void(APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC)(GLenum func); + typedef void(APIENTRYP PFNGLCOVERFILLPATHNVPROC)(GLuint path, GLenum coverMode); + typedef void(APIENTRYP PFNGLCOVERSTROKEPATHNVPROC)(GLuint path, GLenum coverMode); + typedef void(APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC)( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + typedef void(APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + typedef void(APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, GLint* value); + typedef void(APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, GLfloat* value); + typedef void(APIENTRYP PFNGLGETPATHCOMMANDSNVPROC)(GLuint path, GLubyte* commands); + typedef void(APIENTRYP PFNGLGETPATHCOORDSNVPROC)(GLuint path, GLfloat* coords); + typedef void(APIENTRYP PFNGLGETPATHDASHARRAYNVPROC)(GLuint path, GLfloat* dashArray); + typedef void(APIENTRYP PFNGLGETPATHMETRICSNVPROC)( + GLbitfield metricQueryMask, + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLsizei stride, + GLfloat* metrics + ); + typedef void(APIENTRYP PFNGLGETPATHMETRICRANGENVPROC)( + GLbitfield metricQueryMask, + GLuint firstPathName, + GLsizei numPaths, + GLsizei stride, + GLfloat* metrics + ); + typedef void(APIENTRYP PFNGLGETPATHSPACINGNVPROC)( + GLenum pathListMode, + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLfloat advanceScale, + GLfloat kerningScale, + GLenum transformType, + GLfloat* returnedSpacing + ); + typedef GLboolean(APIENTRYP PFNGLISPOINTINFILLPATHNVPROC)(GLuint path, GLuint mask, GLfloat x, GLfloat y); + typedef GLboolean(APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC)(GLuint path, GLfloat x, GLfloat y); + typedef GLfloat(APIENTRYP PFNGLGETPATHLENGTHNVPROC)(GLuint path, GLsizei startSegment, GLsizei numSegments); + typedef GLboolean(APIENTRYP PFNGLPOINTALONGPATHNVPROC)( + GLuint path, + GLsizei startSegment, + GLsizei numSegments, + GLfloat distance, + GLfloat* x, + GLfloat* y, + GLfloat* tangentX, + GLfloat* tangentY + ); + typedef void(APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC)(GLenum matrixMode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC)(GLenum matrixMode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXMULT3X2FNVPROC)(GLenum matrixMode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXMULT3X3FNVPROC)(GLenum matrixMode, const GLfloat* m); + typedef void(APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat* m); + typedef void(APIENTRYP + PFNGLSTENCILTHENCOVERFILLPATHNVPROC)(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); + typedef void(APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)( + GLuint path, + GLint reference, + GLuint mask, + GLenum coverMode + ); + typedef void(APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum fillMode, + GLuint mask, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + typedef void(APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLint reference, + GLuint mask, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + typedef GLenum(APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC)( + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLuint pathParameterTemplate, + GLfloat emScale, + GLuint* baseAndCount + ); + typedef GLenum(APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC)( + GLuint firstPathName, + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLuint firstGlyphIndex, + GLsizei numGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + typedef GLenum(APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)( + GLuint firstPathName, + GLenum fontTarget, + GLsizeiptr fontSize, + const void* fontData, + GLsizei faceIndex, + GLuint firstGlyphIndex, + GLsizei numGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + typedef void(APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)( + GLuint program, + GLint location, + GLenum genMode, + GLint components, + const GLfloat* coeffs + ); + typedef void(APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC)( + GLuint program, + GLenum programInterface, + GLuint index, + GLsizei propCount, + const GLenum* props, + GLsizei count, + GLsizei* length, + GLfloat* params + ); + typedef void(APIENTRYP + PFNGLPATHCOLORGENNVPROC)(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat* coeffs); + typedef void(APIENTRYP PFNGLPATHTEXGENNVPROC)( + GLenum texCoordSet, + GLenum genMode, + GLint components, + const GLfloat* coeffs + ); + typedef void(APIENTRYP PFNGLPATHFOGGENNVPROC)(GLenum genMode); + typedef void(APIENTRYP PFNGLGETPATHCOLORGENIVNVPROC)(GLenum color, GLenum pname, GLint* value); + typedef void(APIENTRYP PFNGLGETPATHCOLORGENFVNVPROC)(GLenum color, GLenum pname, GLfloat* value); + typedef void(APIENTRYP PFNGLGETPATHTEXGENIVNVPROC)(GLenum texCoordSet, GLenum pname, GLint* value); + typedef void(APIENTRYP PFNGLGETPATHTEXGENFVNVPROC)(GLenum texCoordSet, GLenum pname, GLfloat* value); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLuint APIENTRY glGenPathsNV(GLsizei range); + GLAPI void APIENTRY glDeletePathsNV(GLuint path, GLsizei range); + GLAPI GLboolean APIENTRY glIsPathNV(GLuint path); + GLAPI void APIENTRY glPathCommandsNV( + GLuint path, + GLsizei numCommands, + const GLubyte* commands, + GLsizei numCoords, + GLenum coordType, + const void* coords + ); + GLAPI void APIENTRY glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const void* coords); + GLAPI void APIENTRY glPathSubCommandsNV( + GLuint path, + GLsizei commandStart, + GLsizei commandsToDelete, + GLsizei numCommands, + const GLubyte* commands, + GLsizei numCoords, + GLenum coordType, + const void* coords + ); + GLAPI void APIENTRY + glPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void* coords); + GLAPI void APIENTRY glPathStringNV(GLuint path, GLenum format, GLsizei length, const void* pathString); + GLAPI void APIENTRY glPathGlyphsNV( + GLuint firstPathName, + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLsizei numGlyphs, + GLenum type, + const void* charcodes, + GLenum handleMissingGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + GLAPI void APIENTRY glPathGlyphRangeNV( + GLuint firstPathName, + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLuint firstGlyph, + GLsizei numGlyphs, + GLenum handleMissingGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + GLAPI void APIENTRY + glWeightPathsNV(GLuint resultPath, GLsizei numPaths, const GLuint* paths, const GLfloat* weights); + GLAPI void APIENTRY glCopyPathNV(GLuint resultPath, GLuint srcPath); + GLAPI void APIENTRY glInterpolatePathsNV(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); + GLAPI void APIENTRY + glTransformPathNV(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat* transformValues); + GLAPI void APIENTRY glPathParameterivNV(GLuint path, GLenum pname, const GLint* value); + GLAPI void APIENTRY glPathParameteriNV(GLuint path, GLenum pname, GLint value); + GLAPI void APIENTRY glPathParameterfvNV(GLuint path, GLenum pname, const GLfloat* value); + GLAPI void APIENTRY glPathParameterfNV(GLuint path, GLenum pname, GLfloat value); + GLAPI void APIENTRY glPathDashArrayNV(GLuint path, GLsizei dashCount, const GLfloat* dashArray); + GLAPI void APIENTRY glPathStencilFuncNV(GLenum func, GLint ref, GLuint mask); + GLAPI void APIENTRY glPathStencilDepthOffsetNV(GLfloat factor, GLfloat units); + GLAPI void APIENTRY glStencilFillPathNV(GLuint path, GLenum fillMode, GLuint mask); + GLAPI void APIENTRY glStencilStrokePathNV(GLuint path, GLint reference, GLuint mask); + GLAPI void APIENTRY glStencilFillPathInstancedNV( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum fillMode, + GLuint mask, + GLenum transformType, + const GLfloat* transformValues + ); + GLAPI void APIENTRY glStencilStrokePathInstancedNV( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLint reference, + GLuint mask, + GLenum transformType, + const GLfloat* transformValues + ); + GLAPI void APIENTRY glPathCoverDepthFuncNV(GLenum func); + GLAPI void APIENTRY glCoverFillPathNV(GLuint path, GLenum coverMode); + GLAPI void APIENTRY glCoverStrokePathNV(GLuint path, GLenum coverMode); + GLAPI void APIENTRY glCoverFillPathInstancedNV( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + GLAPI void APIENTRY glCoverStrokePathInstancedNV( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + GLAPI void APIENTRY glGetPathParameterivNV(GLuint path, GLenum pname, GLint* value); + GLAPI void APIENTRY glGetPathParameterfvNV(GLuint path, GLenum pname, GLfloat* value); + GLAPI void APIENTRY glGetPathCommandsNV(GLuint path, GLubyte* commands); + GLAPI void APIENTRY glGetPathCoordsNV(GLuint path, GLfloat* coords); + GLAPI void APIENTRY glGetPathDashArrayNV(GLuint path, GLfloat* dashArray); + GLAPI void APIENTRY glGetPathMetricsNV( + GLbitfield metricQueryMask, + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLsizei stride, + GLfloat* metrics + ); + GLAPI void APIENTRY glGetPathMetricRangeNV( + GLbitfield metricQueryMask, + GLuint firstPathName, + GLsizei numPaths, + GLsizei stride, + GLfloat* metrics + ); + GLAPI void APIENTRY glGetPathSpacingNV( + GLenum pathListMode, + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLfloat advanceScale, + GLfloat kerningScale, + GLenum transformType, + GLfloat* returnedSpacing + ); + GLAPI GLboolean APIENTRY glIsPointInFillPathNV(GLuint path, GLuint mask, GLfloat x, GLfloat y); + GLAPI GLboolean APIENTRY glIsPointInStrokePathNV(GLuint path, GLfloat x, GLfloat y); + GLAPI GLfloat APIENTRY glGetPathLengthNV(GLuint path, GLsizei startSegment, GLsizei numSegments); + GLAPI GLboolean APIENTRY glPointAlongPathNV( + GLuint path, + GLsizei startSegment, + GLsizei numSegments, + GLfloat distance, + GLfloat* x, + GLfloat* y, + GLfloat* tangentX, + GLfloat* tangentY + ); + GLAPI void APIENTRY glMatrixLoad3x2fNV(GLenum matrixMode, const GLfloat* m); + GLAPI void APIENTRY glMatrixLoad3x3fNV(GLenum matrixMode, const GLfloat* m); + GLAPI void APIENTRY glMatrixLoadTranspose3x3fNV(GLenum matrixMode, const GLfloat* m); + GLAPI void APIENTRY glMatrixMult3x2fNV(GLenum matrixMode, const GLfloat* m); + GLAPI void APIENTRY glMatrixMult3x3fNV(GLenum matrixMode, const GLfloat* m); + GLAPI void APIENTRY glMatrixMultTranspose3x3fNV(GLenum matrixMode, const GLfloat* m); + GLAPI void APIENTRY glStencilThenCoverFillPathNV(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); + GLAPI void APIENTRY glStencilThenCoverStrokePathNV(GLuint path, GLint reference, GLuint mask, GLenum coverMode); + GLAPI void APIENTRY glStencilThenCoverFillPathInstancedNV( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLenum fillMode, + GLuint mask, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + GLAPI void APIENTRY glStencilThenCoverStrokePathInstancedNV( + GLsizei numPaths, + GLenum pathNameType, + const void* paths, + GLuint pathBase, + GLint reference, + GLuint mask, + GLenum coverMode, + GLenum transformType, + const GLfloat* transformValues + ); + GLAPI GLenum APIENTRY glPathGlyphIndexRangeNV( + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLuint pathParameterTemplate, + GLfloat emScale, + GLuint* baseAndCount + ); + GLAPI GLenum APIENTRY glPathGlyphIndexArrayNV( + GLuint firstPathName, + GLenum fontTarget, + const void* fontName, + GLbitfield fontStyle, + GLuint firstGlyphIndex, + GLsizei numGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + GLAPI GLenum APIENTRY glPathMemoryGlyphIndexArrayNV( + GLuint firstPathName, + GLenum fontTarget, + GLsizeiptr fontSize, + const void* fontData, + GLsizei faceIndex, + GLuint firstGlyphIndex, + GLsizei numGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale + ); + GLAPI void APIENTRY glProgramPathFragmentInputGenNV( + GLuint program, + GLint location, + GLenum genMode, + GLint components, + const GLfloat* coeffs + ); + GLAPI void APIENTRY glGetProgramResourcefvNV( + GLuint program, + GLenum programInterface, + GLuint index, + GLsizei propCount, + const GLenum* props, + GLsizei count, + GLsizei* length, + GLfloat* params + ); + GLAPI void APIENTRY glPathColorGenNV(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat* coeffs); + GLAPI void APIENTRY glPathTexGenNV(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat* coeffs); + GLAPI void APIENTRY glPathFogGenNV(GLenum genMode); + GLAPI void APIENTRY glGetPathColorGenivNV(GLenum color, GLenum pname, GLint* value); + GLAPI void APIENTRY glGetPathColorGenfvNV(GLenum color, GLenum pname, GLfloat* value); + GLAPI void APIENTRY glGetPathTexGenivNV(GLenum texCoordSet, GLenum pname, GLint* value); + GLAPI void APIENTRY glGetPathTexGenfvNV(GLenum texCoordSet, GLenum pname, GLfloat* value); +#endif +#endif /* GL_NV_path_rendering */ + +#ifndef GL_NV_path_rendering_shared_edge +#define GL_NV_path_rendering_shared_edge 1 +#define GL_SHARED_EDGE_NV 0xC0 +#endif /* GL_NV_path_rendering_shared_edge */ + +#ifndef GL_NV_pixel_data_range +#define GL_NV_pixel_data_range 1 +#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 +#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 +#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A +#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B +#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C +#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D + typedef void(APIENTRYP PFNGLPIXELDATARANGENVPROC)(GLenum target, GLsizei length, const void* pointer); + typedef void(APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC)(GLenum target); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPixelDataRangeNV(GLenum target, GLsizei length, const void* pointer); + GLAPI void APIENTRY glFlushPixelDataRangeNV(GLenum target); +#endif +#endif /* GL_NV_pixel_data_range */ + +#ifndef GL_NV_point_sprite +#define GL_NV_point_sprite 1 +#define GL_POINT_SPRITE_NV 0x8861 +#define GL_COORD_REPLACE_NV 0x8862 +#define GL_POINT_SPRITE_R_MODE_NV 0x8863 + typedef void(APIENTRYP PFNGLPOINTPARAMETERINVPROC)(GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLPOINTPARAMETERIVNVPROC)(GLenum pname, const GLint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPointParameteriNV(GLenum pname, GLint param); + GLAPI void APIENTRY glPointParameterivNV(GLenum pname, const GLint* params); +#endif +#endif /* GL_NV_point_sprite */ + +#ifndef GL_NV_present_video +#define GL_NV_present_video 1 +#define GL_FRAME_NV 0x8E26 +#define GL_FIELDS_NV 0x8E27 +#define GL_CURRENT_TIME_NV 0x8E28 +#define GL_NUM_FILL_STREAMS_NV 0x8E29 +#define GL_PRESENT_TIME_NV 0x8E2A +#define GL_PRESENT_DURATION_NV 0x8E2B + typedef void(APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC)( + GLuint video_slot, + GLuint64EXT minPresentTime, + GLuint beginPresentTimeId, + GLuint presentDurationId, + GLenum type, + GLenum target0, + GLuint fill0, + GLuint key0, + GLenum target1, + GLuint fill1, + GLuint key1 + ); + typedef void(APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC)( + GLuint video_slot, + GLuint64EXT minPresentTime, + GLuint beginPresentTimeId, + GLuint presentDurationId, + GLenum type, + GLenum target0, + GLuint fill0, + GLenum target1, + GLuint fill1, + GLenum target2, + GLuint fill2, + GLenum target3, + GLuint fill3 + ); + typedef void(APIENTRYP PFNGLGETVIDEOIVNVPROC)(GLuint video_slot, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETVIDEOUIVNVPROC)(GLuint video_slot, GLenum pname, GLuint* params); + typedef void(APIENTRYP PFNGLGETVIDEOI64VNVPROC)(GLuint video_slot, GLenum pname, GLint64EXT* params); + typedef void(APIENTRYP PFNGLGETVIDEOUI64VNVPROC)(GLuint video_slot, GLenum pname, GLuint64EXT* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPresentFrameKeyedNV( + GLuint video_slot, + GLuint64EXT minPresentTime, + GLuint beginPresentTimeId, + GLuint presentDurationId, + GLenum type, + GLenum target0, + GLuint fill0, + GLuint key0, + GLenum target1, + GLuint fill1, + GLuint key1 + ); + GLAPI void APIENTRY glPresentFrameDualFillNV( + GLuint video_slot, + GLuint64EXT minPresentTime, + GLuint beginPresentTimeId, + GLuint presentDurationId, + GLenum type, + GLenum target0, + GLuint fill0, + GLenum target1, + GLuint fill1, + GLenum target2, + GLuint fill2, + GLenum target3, + GLuint fill3 + ); + GLAPI void APIENTRY glGetVideoivNV(GLuint video_slot, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetVideouivNV(GLuint video_slot, GLenum pname, GLuint* params); + GLAPI void APIENTRY glGetVideoi64vNV(GLuint video_slot, GLenum pname, GLint64EXT* params); + GLAPI void APIENTRY glGetVideoui64vNV(GLuint video_slot, GLenum pname, GLuint64EXT* params); +#endif +#endif /* GL_NV_present_video */ + +#ifndef GL_NV_primitive_restart +#define GL_NV_primitive_restart 1 +#define GL_PRIMITIVE_RESTART_NV 0x8558 +#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 + typedef void(APIENTRYP PFNGLPRIMITIVERESTARTNVPROC)(void); + typedef void(APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC)(GLuint index); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPrimitiveRestartNV(void); + GLAPI void APIENTRY glPrimitiveRestartIndexNV(GLuint index); +#endif +#endif /* GL_NV_primitive_restart */ + +#ifndef GL_NV_primitive_shading_rate +#define GL_NV_primitive_shading_rate 1 +#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1 +#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2 +#endif /* GL_NV_primitive_shading_rate */ + +#ifndef GL_NV_query_resource +#define GL_NV_query_resource 1 +#define GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV 0x9540 +#define GL_QUERY_RESOURCE_MEMTYPE_VIDMEM_NV 0x9542 +#define GL_QUERY_RESOURCE_SYS_RESERVED_NV 0x9544 +#define GL_QUERY_RESOURCE_TEXTURE_NV 0x9545 +#define GL_QUERY_RESOURCE_RENDERBUFFER_NV 0x9546 +#define GL_QUERY_RESOURCE_BUFFEROBJECT_NV 0x9547 + typedef GLint(APIENTRYP PFNGLQUERYRESOURCENVPROC)(GLenum queryType, GLint tagId, GLuint count, GLint* buffer); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLint APIENTRY glQueryResourceNV(GLenum queryType, GLint tagId, GLuint count, GLint* buffer); +#endif +#endif /* GL_NV_query_resource */ + +#ifndef GL_NV_query_resource_tag +#define GL_NV_query_resource_tag 1 + typedef void(APIENTRYP PFNGLGENQUERYRESOURCETAGNVPROC)(GLsizei n, GLint* tagIds); + typedef void(APIENTRYP PFNGLDELETEQUERYRESOURCETAGNVPROC)(GLsizei n, const GLint* tagIds); + typedef void(APIENTRYP PFNGLQUERYRESOURCETAGNVPROC)(GLint tagId, const GLchar* tagString); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGenQueryResourceTagNV(GLsizei n, GLint* tagIds); + GLAPI void APIENTRY glDeleteQueryResourceTagNV(GLsizei n, const GLint* tagIds); + GLAPI void APIENTRY glQueryResourceTagNV(GLint tagId, const GLchar* tagString); +#endif +#endif /* GL_NV_query_resource_tag */ + +#ifndef GL_NV_register_combiners +#define GL_NV_register_combiners 1 +#define GL_REGISTER_COMBINERS_NV 0x8522 +#define GL_VARIABLE_A_NV 0x8523 +#define GL_VARIABLE_B_NV 0x8524 +#define GL_VARIABLE_C_NV 0x8525 +#define GL_VARIABLE_D_NV 0x8526 +#define GL_VARIABLE_E_NV 0x8527 +#define GL_VARIABLE_F_NV 0x8528 +#define GL_VARIABLE_G_NV 0x8529 +#define GL_CONSTANT_COLOR0_NV 0x852A +#define GL_CONSTANT_COLOR1_NV 0x852B +#define GL_SPARE0_NV 0x852E +#define GL_SPARE1_NV 0x852F +#define GL_DISCARD_NV 0x8530 +#define GL_E_TIMES_F_NV 0x8531 +#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 +#define GL_UNSIGNED_IDENTITY_NV 0x8536 +#define GL_UNSIGNED_INVERT_NV 0x8537 +#define GL_EXPAND_NORMAL_NV 0x8538 +#define GL_EXPAND_NEGATE_NV 0x8539 +#define GL_HALF_BIAS_NORMAL_NV 0x853A +#define GL_HALF_BIAS_NEGATE_NV 0x853B +#define GL_SIGNED_IDENTITY_NV 0x853C +#define GL_SIGNED_NEGATE_NV 0x853D +#define GL_SCALE_BY_TWO_NV 0x853E +#define GL_SCALE_BY_FOUR_NV 0x853F +#define GL_SCALE_BY_ONE_HALF_NV 0x8540 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 +#define GL_COMBINER_INPUT_NV 0x8542 +#define GL_COMBINER_MAPPING_NV 0x8543 +#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 +#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 +#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 +#define GL_COMBINER_MUX_SUM_NV 0x8547 +#define GL_COMBINER_SCALE_NV 0x8548 +#define GL_COMBINER_BIAS_NV 0x8549 +#define GL_COMBINER_AB_OUTPUT_NV 0x854A +#define GL_COMBINER_CD_OUTPUT_NV 0x854B +#define GL_COMBINER_SUM_OUTPUT_NV 0x854C +#define GL_MAX_GENERAL_COMBINERS_NV 0x854D +#define GL_NUM_GENERAL_COMBINERS_NV 0x854E +#define GL_COLOR_SUM_CLAMP_NV 0x854F +#define GL_COMBINER0_NV 0x8550 +#define GL_COMBINER1_NV 0x8551 +#define GL_COMBINER2_NV 0x8552 +#define GL_COMBINER3_NV 0x8553 +#define GL_COMBINER4_NV 0x8554 +#define GL_COMBINER5_NV 0x8555 +#define GL_COMBINER6_NV 0x8556 +#define GL_COMBINER7_NV 0x8557 + typedef void(APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC)(GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC)(GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC)(GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLCOMBINERPARAMETERINVPROC)(GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLCOMBINERINPUTNVPROC)( + GLenum stage, + GLenum portion, + GLenum variable, + GLenum input, + GLenum mapping, + GLenum componentUsage + ); + typedef void(APIENTRYP PFNGLCOMBINEROUTPUTNVPROC)( + GLenum stage, + GLenum portion, + GLenum abOutput, + GLenum cdOutput, + GLenum sumOutput, + GLenum scale, + GLenum bias, + GLboolean abDotProduct, + GLboolean cdDotProduct, + GLboolean muxSum + ); + typedef void(APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC)( + GLenum variable, + GLenum input, + GLenum mapping, + GLenum componentUsage + ); + typedef void(APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)( + GLenum stage, + GLenum portion, + GLenum variable, + GLenum pname, + GLfloat* params + ); + typedef void(APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)( + GLenum stage, + GLenum portion, + GLenum variable, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)( + GLenum stage, + GLenum portion, + GLenum pname, + GLfloat* params + ); + typedef void(APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)( + GLenum stage, + GLenum portion, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)(GLenum variable, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)(GLenum variable, GLenum pname, GLint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glCombinerParameterfvNV(GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glCombinerParameterfNV(GLenum pname, GLfloat param); + GLAPI void APIENTRY glCombinerParameterivNV(GLenum pname, const GLint* params); + GLAPI void APIENTRY glCombinerParameteriNV(GLenum pname, GLint param); + GLAPI void APIENTRY glCombinerInputNV( + GLenum stage, + GLenum portion, + GLenum variable, + GLenum input, + GLenum mapping, + GLenum componentUsage + ); + GLAPI void APIENTRY glCombinerOutputNV( + GLenum stage, + GLenum portion, + GLenum abOutput, + GLenum cdOutput, + GLenum sumOutput, + GLenum scale, + GLenum bias, + GLboolean abDotProduct, + GLboolean cdDotProduct, + GLboolean muxSum + ); + GLAPI void APIENTRY glFinalCombinerInputNV(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); + GLAPI void APIENTRY + glGetCombinerInputParameterfvNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat* params); + GLAPI void APIENTRY + glGetCombinerInputParameterivNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetCombinerOutputParameterfvNV(GLenum stage, GLenum portion, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetCombinerOutputParameterivNV(GLenum stage, GLenum portion, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV(GLenum variable, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV(GLenum variable, GLenum pname, GLint* params); +#endif +#endif /* GL_NV_register_combiners */ + +#ifndef GL_NV_register_combiners2 +#define GL_NV_register_combiners2 1 +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 + typedef void(APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, GLfloat* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glCombinerStageParameterfvNV(GLenum stage, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glGetCombinerStageParameterfvNV(GLenum stage, GLenum pname, GLfloat* params); +#endif +#endif /* GL_NV_register_combiners2 */ + +#ifndef GL_NV_representative_fragment_test +#define GL_NV_representative_fragment_test 1 +#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F +#endif /* GL_NV_representative_fragment_test */ + +#ifndef GL_NV_robustness_video_memory_purge +#define GL_NV_robustness_video_memory_purge 1 +#define GL_PURGED_CONTEXT_RESET_NV 0x92BB +#endif /* GL_NV_robustness_video_memory_purge */ + +#ifndef GL_NV_sample_locations +#define GL_NV_sample_locations 1 +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340 +#define GL_SAMPLE_LOCATION_NV 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343 + typedef void(APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)( + GLenum target, + GLuint start, + GLsizei count, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)( + GLuint framebuffer, + GLuint start, + GLsizei count, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFramebufferSampleLocationsfvNV(GLenum target, GLuint start, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY + glNamedFramebufferSampleLocationsfvNV(GLuint framebuffer, GLuint start, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY glResolveDepthValuesNV(void); +#endif +#endif /* GL_NV_sample_locations */ + +#ifndef GL_NV_sample_mask_override_coverage +#define GL_NV_sample_mask_override_coverage 1 +#endif /* GL_NV_sample_mask_override_coverage */ + +#ifndef GL_NV_scissor_exclusive +#define GL_NV_scissor_exclusive 1 +#define GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555 +#define GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556 + typedef void(APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC)(GLint x, GLint y, GLsizei width, GLsizei height); + typedef void(APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC)(GLuint first, GLsizei count, const GLint* v); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glScissorExclusiveNV(GLint x, GLint y, GLsizei width, GLsizei height); + GLAPI void APIENTRY glScissorExclusiveArrayvNV(GLuint first, GLsizei count, const GLint* v); +#endif +#endif /* GL_NV_scissor_exclusive */ + +#ifndef GL_NV_shader_atomic_counters +#define GL_NV_shader_atomic_counters 1 +#endif /* GL_NV_shader_atomic_counters */ + +#ifndef GL_NV_shader_atomic_float +#define GL_NV_shader_atomic_float 1 +#endif /* GL_NV_shader_atomic_float */ + +#ifndef GL_NV_shader_atomic_float64 +#define GL_NV_shader_atomic_float64 1 +#endif /* GL_NV_shader_atomic_float64 */ + +#ifndef GL_NV_shader_atomic_fp16_vector +#define GL_NV_shader_atomic_fp16_vector 1 +#endif /* GL_NV_shader_atomic_fp16_vector */ + +#ifndef GL_NV_shader_atomic_int64 +#define GL_NV_shader_atomic_int64 1 +#endif /* GL_NV_shader_atomic_int64 */ + +#ifndef GL_NV_shader_buffer_load +#define GL_NV_shader_buffer_load 1 +#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D +#define GL_GPU_ADDRESS_NV 0x8F34 +#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 + typedef void(APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC)(GLenum target, GLenum access); + typedef void(APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC)(GLenum target); + typedef GLboolean(APIENTRYP PFNGLISBUFFERRESIDENTNVPROC)(GLenum target); + typedef void(APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)(GLuint buffer, GLenum access); + typedef void(APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)(GLuint buffer); + typedef GLboolean(APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC)(GLuint buffer); + typedef void(APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC)(GLenum target, GLenum pname, GLuint64EXT* params); + typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)(GLuint buffer, GLenum pname, GLuint64EXT* params); + typedef void(APIENTRYP PFNGLGETINTEGERUI64VNVPROC)(GLenum value, GLuint64EXT* result); + typedef void(APIENTRYP PFNGLUNIFORMUI64NVPROC)(GLint location, GLuint64EXT value); + typedef void(APIENTRYP PFNGLUNIFORMUI64VNVPROC)(GLint location, GLsizei count, const GLuint64EXT* value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC)(GLuint program, GLint location, GLuint64EXT value); + typedef void(APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC)( + GLuint program, + GLint location, + GLsizei count, + const GLuint64EXT* value + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glMakeBufferResidentNV(GLenum target, GLenum access); + GLAPI void APIENTRY glMakeBufferNonResidentNV(GLenum target); + GLAPI GLboolean APIENTRY glIsBufferResidentNV(GLenum target); + GLAPI void APIENTRY glMakeNamedBufferResidentNV(GLuint buffer, GLenum access); + GLAPI void APIENTRY glMakeNamedBufferNonResidentNV(GLuint buffer); + GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV(GLuint buffer); + GLAPI void APIENTRY glGetBufferParameterui64vNV(GLenum target, GLenum pname, GLuint64EXT* params); + GLAPI void APIENTRY glGetNamedBufferParameterui64vNV(GLuint buffer, GLenum pname, GLuint64EXT* params); + GLAPI void APIENTRY glGetIntegerui64vNV(GLenum value, GLuint64EXT* result); + GLAPI void APIENTRY glUniformui64NV(GLint location, GLuint64EXT value); + GLAPI void APIENTRY glUniformui64vNV(GLint location, GLsizei count, const GLuint64EXT* value); + GLAPI void APIENTRY glProgramUniformui64NV(GLuint program, GLint location, GLuint64EXT value); + GLAPI void APIENTRY + glProgramUniformui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT* value); +#endif +#endif /* GL_NV_shader_buffer_load */ + +#ifndef GL_NV_shader_buffer_store +#define GL_NV_shader_buffer_store 1 +#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010 +#endif /* GL_NV_shader_buffer_store */ + +#ifndef GL_NV_shader_storage_buffer_object +#define GL_NV_shader_storage_buffer_object 1 +#endif /* GL_NV_shader_storage_buffer_object */ + +#ifndef GL_NV_shader_subgroup_partitioned +#define GL_NV_shader_subgroup_partitioned 1 +#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100 +#endif /* GL_NV_shader_subgroup_partitioned */ + +#ifndef GL_NV_shader_texture_footprint +#define GL_NV_shader_texture_footprint 1 +#endif /* GL_NV_shader_texture_footprint */ + +#ifndef GL_NV_shader_thread_group +#define GL_NV_shader_thread_group 1 +#define GL_WARP_SIZE_NV 0x9339 +#define GL_WARPS_PER_SM_NV 0x933A +#define GL_SM_COUNT_NV 0x933B +#endif /* GL_NV_shader_thread_group */ + +#ifndef GL_NV_shader_thread_shuffle +#define GL_NV_shader_thread_shuffle 1 +#endif /* GL_NV_shader_thread_shuffle */ + +#ifndef GL_NV_shading_rate_image +#define GL_NV_shading_rate_image 1 +#define GL_SHADING_RATE_IMAGE_NV 0x9563 +#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564 +#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565 +#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569 +#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A +#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B +#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C +#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D +#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E +#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F +#define GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B +#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C +#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D +#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E +#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F +#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE +#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF +#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0 + typedef void(APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC)(GLuint texture); + typedef void(APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC)(GLuint viewport, GLuint entry, GLenum* rate); + typedef void(APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC)( + GLenum rate, + GLuint samples, + GLuint index, + GLint* location + ); + typedef void(APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC)(GLboolean synchronize); + typedef void(APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC)( + GLuint viewport, + GLuint first, + GLsizei count, + const GLenum* rates + ); + typedef void(APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC)(GLenum order); + typedef void(APIENTRYP + PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC)(GLenum rate, GLuint samples, const GLint* locations); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBindShadingRateImageNV(GLuint texture); + GLAPI void APIENTRY glGetShadingRateImagePaletteNV(GLuint viewport, GLuint entry, GLenum* rate); + GLAPI void APIENTRY glGetShadingRateSampleLocationivNV(GLenum rate, GLuint samples, GLuint index, GLint* location); + GLAPI void APIENTRY glShadingRateImageBarrierNV(GLboolean synchronize); + GLAPI void APIENTRY glShadingRateImagePaletteNV(GLuint viewport, GLuint first, GLsizei count, const GLenum* rates); + GLAPI void APIENTRY glShadingRateSampleOrderNV(GLenum order); + GLAPI void APIENTRY glShadingRateSampleOrderCustomNV(GLenum rate, GLuint samples, const GLint* locations); +#endif +#endif /* GL_NV_shading_rate_image */ + +#ifndef GL_NV_stereo_view_rendering +#define GL_NV_stereo_view_rendering 1 +#endif /* GL_NV_stereo_view_rendering */ + +#ifndef GL_NV_tessellation_program5 +#define GL_NV_tessellation_program5 1 +#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 +#define GL_TESS_CONTROL_PROGRAM_NV 0x891E +#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F +#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 +#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75 +#endif /* GL_NV_tessellation_program5 */ + +#ifndef GL_NV_texgen_emboss +#define GL_NV_texgen_emboss 1 +#define GL_EMBOSS_LIGHT_NV 0x855D +#define GL_EMBOSS_CONSTANT_NV 0x855E +#define GL_EMBOSS_MAP_NV 0x855F +#endif /* GL_NV_texgen_emboss */ + +#ifndef GL_NV_texgen_reflection +#define GL_NV_texgen_reflection 1 +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_REFLECTION_MAP_NV 0x8512 +#endif /* GL_NV_texgen_reflection */ + +#ifndef GL_NV_texture_barrier +#define GL_NV_texture_barrier 1 + typedef void(APIENTRYP PFNGLTEXTUREBARRIERNVPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTextureBarrierNV(void); +#endif +#endif /* GL_NV_texture_barrier */ + +#ifndef GL_NV_texture_compression_vtc +#define GL_NV_texture_compression_vtc 1 +#endif /* GL_NV_texture_compression_vtc */ + +#ifndef GL_NV_texture_env_combine4 +#define GL_NV_texture_env_combine4 1 +#define GL_COMBINE4_NV 0x8503 +#define GL_SOURCE3_RGB_NV 0x8583 +#define GL_SOURCE3_ALPHA_NV 0x858B +#define GL_OPERAND3_RGB_NV 0x8593 +#define GL_OPERAND3_ALPHA_NV 0x859B +#endif /* GL_NV_texture_env_combine4 */ + +#ifndef GL_NV_texture_expand_normal +#define GL_NV_texture_expand_normal 1 +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F +#endif /* GL_NV_texture_expand_normal */ + +#ifndef GL_NV_texture_multisample +#define GL_NV_texture_multisample 1 +#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045 +#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046 + typedef void(APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)( + GLenum target, + GLsizei coverageSamples, + GLsizei colorSamples, + GLint internalFormat, + GLsizei width, + GLsizei height, + GLboolean fixedSampleLocations + ); + typedef void(APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)( + GLenum target, + GLsizei coverageSamples, + GLsizei colorSamples, + GLint internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedSampleLocations + ); + typedef void(APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)( + GLuint texture, + GLenum target, + GLsizei samples, + GLint internalFormat, + GLsizei width, + GLsizei height, + GLboolean fixedSampleLocations + ); + typedef void(APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)( + GLuint texture, + GLenum target, + GLsizei samples, + GLint internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedSampleLocations + ); + typedef void(APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)( + GLuint texture, + GLenum target, + GLsizei coverageSamples, + GLsizei colorSamples, + GLint internalFormat, + GLsizei width, + GLsizei height, + GLboolean fixedSampleLocations + ); + typedef void(APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)( + GLuint texture, + GLenum target, + GLsizei coverageSamples, + GLsizei colorSamples, + GLint internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedSampleLocations + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTexImage2DMultisampleCoverageNV( + GLenum target, + GLsizei coverageSamples, + GLsizei colorSamples, + GLint internalFormat, + GLsizei width, + GLsizei height, + GLboolean fixedSampleLocations + ); + GLAPI void APIENTRY glTexImage3DMultisampleCoverageNV( + GLenum target, + GLsizei coverageSamples, + GLsizei colorSamples, + GLint internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedSampleLocations + ); + GLAPI void APIENTRY glTextureImage2DMultisampleNV( + GLuint texture, + GLenum target, + GLsizei samples, + GLint internalFormat, + GLsizei width, + GLsizei height, + GLboolean fixedSampleLocations + ); + GLAPI void APIENTRY glTextureImage3DMultisampleNV( + GLuint texture, + GLenum target, + GLsizei samples, + GLint internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedSampleLocations + ); + GLAPI void APIENTRY glTextureImage2DMultisampleCoverageNV( + GLuint texture, + GLenum target, + GLsizei coverageSamples, + GLsizei colorSamples, + GLint internalFormat, + GLsizei width, + GLsizei height, + GLboolean fixedSampleLocations + ); + GLAPI void APIENTRY glTextureImage3DMultisampleCoverageNV( + GLuint texture, + GLenum target, + GLsizei coverageSamples, + GLsizei colorSamples, + GLint internalFormat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLboolean fixedSampleLocations + ); +#endif +#endif /* GL_NV_texture_multisample */ + +#ifndef GL_NV_texture_rectangle +#define GL_NV_texture_rectangle 1 +#define GL_TEXTURE_RECTANGLE_NV 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 +#endif /* GL_NV_texture_rectangle */ + +#ifndef GL_NV_texture_rectangle_compressed +#define GL_NV_texture_rectangle_compressed 1 +#endif /* GL_NV_texture_rectangle_compressed */ + +#ifndef GL_NV_texture_shader +#define GL_NV_texture_shader 1 +#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C +#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D +#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E +#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 +#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB +#define GL_DSDT_MAG_INTENSITY_NV 0x86DC +#define GL_SHADER_CONSISTENT_NV 0x86DD +#define GL_TEXTURE_SHADER_NV 0x86DE +#define GL_SHADER_OPERATION_NV 0x86DF +#define GL_CULL_MODES_NV 0x86E0 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 +#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 +#define GL_CONST_EYE_NV 0x86E5 +#define GL_PASS_THROUGH_NV 0x86E6 +#define GL_CULL_FRAGMENT_NV 0x86E7 +#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA +#define GL_DOT_PRODUCT_NV 0x86EC +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED +#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE +#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 +#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 +#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 +#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 +#define GL_HILO_NV 0x86F4 +#define GL_DSDT_NV 0x86F5 +#define GL_DSDT_MAG_NV 0x86F6 +#define GL_DSDT_MAG_VIB_NV 0x86F7 +#define GL_HILO16_NV 0x86F8 +#define GL_SIGNED_HILO_NV 0x86F9 +#define GL_SIGNED_HILO16_NV 0x86FA +#define GL_SIGNED_RGBA_NV 0x86FB +#define GL_SIGNED_RGBA8_NV 0x86FC +#define GL_SIGNED_RGB_NV 0x86FE +#define GL_SIGNED_RGB8_NV 0x86FF +#define GL_SIGNED_LUMINANCE_NV 0x8701 +#define GL_SIGNED_LUMINANCE8_NV 0x8702 +#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 +#define GL_SIGNED_ALPHA_NV 0x8705 +#define GL_SIGNED_ALPHA8_NV 0x8706 +#define GL_SIGNED_INTENSITY_NV 0x8707 +#define GL_SIGNED_INTENSITY8_NV 0x8708 +#define GL_DSDT8_NV 0x8709 +#define GL_DSDT8_MAG8_NV 0x870A +#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D +#define GL_HI_SCALE_NV 0x870E +#define GL_LO_SCALE_NV 0x870F +#define GL_DS_SCALE_NV 0x8710 +#define GL_DT_SCALE_NV 0x8711 +#define GL_MAGNITUDE_SCALE_NV 0x8712 +#define GL_VIBRANCE_SCALE_NV 0x8713 +#define GL_HI_BIAS_NV 0x8714 +#define GL_LO_BIAS_NV 0x8715 +#define GL_DS_BIAS_NV 0x8716 +#define GL_DT_BIAS_NV 0x8717 +#define GL_MAGNITUDE_BIAS_NV 0x8718 +#define GL_VIBRANCE_BIAS_NV 0x8719 +#define GL_TEXTURE_BORDER_VALUES_NV 0x871A +#define GL_TEXTURE_HI_SIZE_NV 0x871B +#define GL_TEXTURE_LO_SIZE_NV 0x871C +#define GL_TEXTURE_DS_SIZE_NV 0x871D +#define GL_TEXTURE_DT_SIZE_NV 0x871E +#define GL_TEXTURE_MAG_SIZE_NV 0x871F +#endif /* GL_NV_texture_shader */ + +#ifndef GL_NV_texture_shader2 +#define GL_NV_texture_shader2 1 +#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#endif /* GL_NV_texture_shader2 */ + +#ifndef GL_NV_texture_shader3 +#define GL_NV_texture_shader3 1 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 +#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 +#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 +#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A +#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B +#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C +#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D +#define GL_HILO8_NV 0x885E +#define GL_SIGNED_HILO8_NV 0x885F +#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 +#endif /* GL_NV_texture_shader3 */ + +#ifndef GL_NV_timeline_semaphore +#define GL_NV_timeline_semaphore 1 +#define GL_TIMELINE_SEMAPHORE_VALUE_NV 0x9595 +#define GL_SEMAPHORE_TYPE_NV 0x95B3 +#define GL_SEMAPHORE_TYPE_BINARY_NV 0x95B4 +#define GL_SEMAPHORE_TYPE_TIMELINE_NV 0x95B5 +#define GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6 + typedef void(APIENTRYP PFNGLCREATESEMAPHORESNVPROC)(GLsizei n, GLuint* semaphores); + typedef void(APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC)(GLuint semaphore, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC)(GLuint semaphore, GLenum pname, GLint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glCreateSemaphoresNV(GLsizei n, GLuint* semaphores); + GLAPI void APIENTRY glSemaphoreParameterivNV(GLuint semaphore, GLenum pname, const GLint* params); + GLAPI void APIENTRY glGetSemaphoreParameterivNV(GLuint semaphore, GLenum pname, GLint* params); +#endif +#endif /* GL_NV_timeline_semaphore */ + +#ifndef GL_NV_transform_feedback +#define GL_NV_transform_feedback 1 +#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 +#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 +#define GL_TEXTURE_COORD_NV 0x8C79 +#define GL_CLIP_DISTANCE_NV 0x8C7A +#define GL_VERTEX_ID_NV 0x8C7B +#define GL_PRIMITIVE_ID_NV 0x8C7C +#define GL_GENERIC_ATTRIB_NV 0x8C7D +#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 +#define GL_ACTIVE_VARYINGS_NV 0x8C81 +#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 +#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 +#define GL_PRIMITIVES_GENERATED_NV 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 +#define GL_RASTERIZER_DISCARD_NV 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B +#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C +#define GL_SEPARATE_ATTRIBS_NV 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F +#define GL_LAYER_NV 0x8DAA +#define GL_NEXT_BUFFER_NV -2 +#define GL_SKIP_COMPONENTS4_NV -3 +#define GL_SKIP_COMPONENTS3_NV -4 +#define GL_SKIP_COMPONENTS2_NV -5 +#define GL_SKIP_COMPONENTS1_NV -6 + typedef void(APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC)(GLenum primitiveMode); + typedef void(APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC)(void); + typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)(GLsizei count, const GLint* attribs, GLenum bufferMode); + typedef void(APIENTRYP PFNGLBINDBUFFERRANGENVPROC)( + GLenum target, + GLuint index, + GLuint buffer, + GLintptr offset, + GLsizeiptr size + ); + typedef void(APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); + typedef void(APIENTRYP PFNGLBINDBUFFERBASENVPROC)(GLenum target, GLuint index, GLuint buffer); + typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)( + GLuint program, + GLsizei count, + const GLint* locations, + GLenum bufferMode + ); + typedef void(APIENTRYP PFNGLACTIVEVARYINGNVPROC)(GLuint program, const GLchar* name); + typedef GLint(APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC)(GLuint program, const GLchar* name); + typedef void(APIENTRYP PFNGLGETACTIVEVARYINGNVPROC)( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLsizei* size, + GLenum* type, + GLchar* name + ); + typedef void(APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)(GLuint program, GLuint index, GLint* location); + typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC)( + GLsizei count, + const GLint* attribs, + GLsizei nbuffers, + const GLint* bufstreams, + GLenum bufferMode + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBeginTransformFeedbackNV(GLenum primitiveMode); + GLAPI void APIENTRY glEndTransformFeedbackNV(void); + GLAPI void APIENTRY glTransformFeedbackAttribsNV(GLsizei count, const GLint* attribs, GLenum bufferMode); + GLAPI void APIENTRY + glBindBufferRangeNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); + GLAPI void APIENTRY glBindBufferOffsetNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset); + GLAPI void APIENTRY glBindBufferBaseNV(GLenum target, GLuint index, GLuint buffer); + GLAPI void APIENTRY + glTransformFeedbackVaryingsNV(GLuint program, GLsizei count, const GLint* locations, GLenum bufferMode); + GLAPI void APIENTRY glActiveVaryingNV(GLuint program, const GLchar* name); + GLAPI GLint APIENTRY glGetVaryingLocationNV(GLuint program, const GLchar* name); + GLAPI void APIENTRY glGetActiveVaryingNV( + GLuint program, + GLuint index, + GLsizei bufSize, + GLsizei* length, + GLsizei* size, + GLenum* type, + GLchar* name + ); + GLAPI void APIENTRY glGetTransformFeedbackVaryingNV(GLuint program, GLuint index, GLint* location); + GLAPI void APIENTRY glTransformFeedbackStreamAttribsNV( + GLsizei count, + const GLint* attribs, + GLsizei nbuffers, + const GLint* bufstreams, + GLenum bufferMode + ); +#endif +#endif /* GL_NV_transform_feedback */ + +#ifndef GL_NV_transform_feedback2 +#define GL_NV_transform_feedback2 1 +#define GL_TRANSFORM_FEEDBACK_NV 0x8E22 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 + typedef void(APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC)(GLenum target, GLuint id); + typedef void(APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC)(GLsizei n, const GLuint* ids); + typedef void(APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC)(GLsizei n, GLuint* ids); + typedef GLboolean(APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC)(GLuint id); + typedef void(APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC)(void); + typedef void(APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC)(void); + typedef void(APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC)(GLenum mode, GLuint id); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBindTransformFeedbackNV(GLenum target, GLuint id); + GLAPI void APIENTRY glDeleteTransformFeedbacksNV(GLsizei n, const GLuint* ids); + GLAPI void APIENTRY glGenTransformFeedbacksNV(GLsizei n, GLuint* ids); + GLAPI GLboolean APIENTRY glIsTransformFeedbackNV(GLuint id); + GLAPI void APIENTRY glPauseTransformFeedbackNV(void); + GLAPI void APIENTRY glResumeTransformFeedbackNV(void); + GLAPI void APIENTRY glDrawTransformFeedbackNV(GLenum mode, GLuint id); +#endif +#endif /* GL_NV_transform_feedback2 */ + +#ifndef GL_NV_uniform_buffer_std430_layout +#define GL_NV_uniform_buffer_std430_layout 1 +#endif /* GL_NV_uniform_buffer_std430_layout */ + +#ifndef GL_NV_uniform_buffer_unified_memory +#define GL_NV_uniform_buffer_unified_memory 1 +#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E +#define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F +#define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370 +#endif /* GL_NV_uniform_buffer_unified_memory */ + +#ifndef GL_NV_vdpau_interop +#define GL_NV_vdpau_interop 1 + typedef GLintptr GLvdpauSurfaceNV; +#define GL_SURFACE_STATE_NV 0x86EB +#define GL_SURFACE_REGISTERED_NV 0x86FD +#define GL_SURFACE_MAPPED_NV 0x8700 +#define GL_WRITE_DISCARD_NV 0x88BE + typedef void(APIENTRYP PFNGLVDPAUINITNVPROC)(const void* vdpDevice, const void* getProcAddress); + typedef void(APIENTRYP PFNGLVDPAUFININVPROC)(void); + typedef GLvdpauSurfaceNV(APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)( + const void* vdpSurface, + GLenum target, + GLsizei numTextureNames, + const GLuint* textureNames + ); + typedef GLvdpauSurfaceNV(APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)( + const void* vdpSurface, + GLenum target, + GLsizei numTextureNames, + const GLuint* textureNames + ); + typedef GLboolean(APIENTRYP PFNGLVDPAUISSURFACENVPROC)(GLvdpauSurfaceNV surface); + typedef void(APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC)(GLvdpauSurfaceNV surface); + typedef void(APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC)( + GLvdpauSurfaceNV surface, + GLenum pname, + GLsizei count, + GLsizei* length, + GLint* values + ); + typedef void(APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC)(GLvdpauSurfaceNV surface, GLenum access); + typedef void(APIENTRYP PFNGLVDPAUMAPSURFACESNVPROC)(GLsizei numSurfaces, const GLvdpauSurfaceNV* surfaces); + typedef void(APIENTRYP PFNGLVDPAUUNMAPSURFACESNVPROC)(GLsizei numSurface, const GLvdpauSurfaceNV* surfaces); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glVDPAUInitNV(const void* vdpDevice, const void* getProcAddress); + GLAPI void APIENTRY glVDPAUFiniNV(void); + GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV( + const void* vdpSurface, + GLenum target, + GLsizei numTextureNames, + const GLuint* textureNames + ); + GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV( + const void* vdpSurface, + GLenum target, + GLsizei numTextureNames, + const GLuint* textureNames + ); + GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV(GLvdpauSurfaceNV surface); + GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV(GLvdpauSurfaceNV surface); + GLAPI void APIENTRY + glVDPAUGetSurfaceivNV(GLvdpauSurfaceNV surface, GLenum pname, GLsizei count, GLsizei* length, GLint* values); + GLAPI void APIENTRY glVDPAUSurfaceAccessNV(GLvdpauSurfaceNV surface, GLenum access); + GLAPI void APIENTRY glVDPAUMapSurfacesNV(GLsizei numSurfaces, const GLvdpauSurfaceNV* surfaces); + GLAPI void APIENTRY glVDPAUUnmapSurfacesNV(GLsizei numSurface, const GLvdpauSurfaceNV* surfaces); +#endif +#endif /* GL_NV_vdpau_interop */ + +#ifndef GL_NV_vdpau_interop2 +#define GL_NV_vdpau_interop2 1 + typedef GLvdpauSurfaceNV(APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC)( + const void* vdpSurface, + GLenum target, + GLsizei numTextureNames, + const GLuint* textureNames, + GLboolean isFrameStructure + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceWithPictureStructureNV( + const void* vdpSurface, + GLenum target, + GLsizei numTextureNames, + const GLuint* textureNames, + GLboolean isFrameStructure + ); +#endif +#endif /* GL_NV_vdpau_interop2 */ + +#ifndef GL_NV_vertex_array_range +#define GL_NV_vertex_array_range 1 +#define GL_VERTEX_ARRAY_RANGE_NV 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E +#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F +#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 + typedef void(APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC)(void); + typedef void(APIENTRYP PFNGLVERTEXARRAYRANGENVPROC)(GLsizei length, const void* pointer); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFlushVertexArrayRangeNV(void); + GLAPI void APIENTRY glVertexArrayRangeNV(GLsizei length, const void* pointer); +#endif +#endif /* GL_NV_vertex_array_range */ + +#ifndef GL_NV_vertex_array_range2 +#define GL_NV_vertex_array_range2 1 +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 +#endif /* GL_NV_vertex_array_range2 */ + +#ifndef GL_NV_vertex_attrib_integer_64bit +#define GL_NV_vertex_attrib_integer_64bit 1 + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC)(GLuint index, GLint64EXT x); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC)( + GLuint index, + GLint64EXT x, + GLint64EXT y, + GLint64EXT z, + GLint64EXT w + ); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC)(GLuint index, const GLint64EXT* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC)(GLuint index, const GLint64EXT* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC)(GLuint index, const GLint64EXT* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC)(GLuint index, const GLint64EXT* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC)(GLuint index, GLuint64EXT x); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC)(GLuint index, GLuint64EXT x, GLuint64EXT y); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC)(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC)( + GLuint index, + GLuint64EXT x, + GLuint64EXT y, + GLuint64EXT z, + GLuint64EXT w + ); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC)(GLuint index, const GLuint64EXT* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC)(GLuint index, const GLuint64EXT* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC)(GLuint index, const GLuint64EXT* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC)(GLuint index, const GLuint64EXT* v); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC)(GLuint index, GLenum pname, GLint64EXT* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC)(GLuint index, GLenum pname, GLuint64EXT* params); + typedef void(APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC)(GLuint index, GLint size, GLenum type, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glVertexAttribL1i64NV(GLuint index, GLint64EXT x); + GLAPI void APIENTRY glVertexAttribL2i64NV(GLuint index, GLint64EXT x, GLint64EXT y); + GLAPI void APIENTRY glVertexAttribL3i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); + GLAPI void APIENTRY glVertexAttribL4i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); + GLAPI void APIENTRY glVertexAttribL1i64vNV(GLuint index, const GLint64EXT* v); + GLAPI void APIENTRY glVertexAttribL2i64vNV(GLuint index, const GLint64EXT* v); + GLAPI void APIENTRY glVertexAttribL3i64vNV(GLuint index, const GLint64EXT* v); + GLAPI void APIENTRY glVertexAttribL4i64vNV(GLuint index, const GLint64EXT* v); + GLAPI void APIENTRY glVertexAttribL1ui64NV(GLuint index, GLuint64EXT x); + GLAPI void APIENTRY glVertexAttribL2ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y); + GLAPI void APIENTRY glVertexAttribL3ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); + GLAPI void APIENTRY + glVertexAttribL4ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); + GLAPI void APIENTRY glVertexAttribL1ui64vNV(GLuint index, const GLuint64EXT* v); + GLAPI void APIENTRY glVertexAttribL2ui64vNV(GLuint index, const GLuint64EXT* v); + GLAPI void APIENTRY glVertexAttribL3ui64vNV(GLuint index, const GLuint64EXT* v); + GLAPI void APIENTRY glVertexAttribL4ui64vNV(GLuint index, const GLuint64EXT* v); + GLAPI void APIENTRY glGetVertexAttribLi64vNV(GLuint index, GLenum pname, GLint64EXT* params); + GLAPI void APIENTRY glGetVertexAttribLui64vNV(GLuint index, GLenum pname, GLuint64EXT* params); + GLAPI void APIENTRY glVertexAttribLFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride); +#endif +#endif /* GL_NV_vertex_attrib_integer_64bit */ + +#ifndef GL_NV_vertex_buffer_unified_memory +#define GL_NV_vertex_buffer_unified_memory 1 +#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E +#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F +#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 +#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 +#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 +#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 +#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 +#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 +#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 +#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 +#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 +#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 +#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A +#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B +#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C +#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D +#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E +#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F +#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 +#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 +#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 +#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 +#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 +#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 +#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 + typedef void(APIENTRYP + PFNGLBUFFERADDRESSRANGENVPROC)(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); + typedef void(APIENTRYP PFNGLVERTEXFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLNORMALFORMATNVPROC)(GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLCOLORFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLINDEXFORMATNVPROC)(GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLTEXCOORDFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLEDGEFLAGFORMATNVPROC)(GLsizei stride); + typedef void(APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLFOGCOORDFORMATNVPROC)(GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC)( + GLuint index, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride + ); + typedef void(APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC)(GLuint index, GLint size, GLenum type, GLsizei stride); + typedef void(APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC)(GLenum value, GLuint index, GLuint64EXT* result); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBufferAddressRangeNV(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); + GLAPI void APIENTRY glVertexFormatNV(GLint size, GLenum type, GLsizei stride); + GLAPI void APIENTRY glNormalFormatNV(GLenum type, GLsizei stride); + GLAPI void APIENTRY glColorFormatNV(GLint size, GLenum type, GLsizei stride); + GLAPI void APIENTRY glIndexFormatNV(GLenum type, GLsizei stride); + GLAPI void APIENTRY glTexCoordFormatNV(GLint size, GLenum type, GLsizei stride); + GLAPI void APIENTRY glEdgeFlagFormatNV(GLsizei stride); + GLAPI void APIENTRY glSecondaryColorFormatNV(GLint size, GLenum type, GLsizei stride); + GLAPI void APIENTRY glFogCoordFormatNV(GLenum type, GLsizei stride); + GLAPI void APIENTRY + glVertexAttribFormatNV(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); + GLAPI void APIENTRY glVertexAttribIFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride); + GLAPI void APIENTRY glGetIntegerui64i_vNV(GLenum value, GLuint index, GLuint64EXT* result); +#endif +#endif /* GL_NV_vertex_buffer_unified_memory */ + +#ifndef GL_NV_vertex_program +#define GL_NV_vertex_program 1 +#define GL_VERTEX_PROGRAM_NV 0x8620 +#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 +#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 +#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 +#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 +#define GL_CURRENT_ATTRIB_NV 0x8626 +#define GL_PROGRAM_LENGTH_NV 0x8627 +#define GL_PROGRAM_STRING_NV 0x8628 +#define GL_MODELVIEW_PROJECTION_NV 0x8629 +#define GL_IDENTITY_NV 0x862A +#define GL_INVERSE_NV 0x862B +#define GL_TRANSPOSE_NV 0x862C +#define GL_INVERSE_TRANSPOSE_NV 0x862D +#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E +#define GL_MAX_TRACK_MATRICES_NV 0x862F +#define GL_MATRIX0_NV 0x8630 +#define GL_MATRIX1_NV 0x8631 +#define GL_MATRIX2_NV 0x8632 +#define GL_MATRIX3_NV 0x8633 +#define GL_MATRIX4_NV 0x8634 +#define GL_MATRIX5_NV 0x8635 +#define GL_MATRIX6_NV 0x8636 +#define GL_MATRIX7_NV 0x8637 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 +#define GL_CURRENT_MATRIX_NV 0x8641 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 +#define GL_PROGRAM_PARAMETER_NV 0x8644 +#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 +#define GL_PROGRAM_TARGET_NV 0x8646 +#define GL_PROGRAM_RESIDENT_NV 0x8647 +#define GL_TRACK_MATRIX_NV 0x8648 +#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 +#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A +#define GL_PROGRAM_ERROR_POSITION_NV 0x864B +#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 +#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 +#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 +#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 +#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 +#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 +#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 +#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 +#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 +#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 +#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A +#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B +#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C +#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D +#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E +#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F +#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 +#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A +#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B +#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C +#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D +#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E +#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F +#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 +#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A +#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B +#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C +#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D +#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E +#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F + typedef GLboolean(APIENTRYP + PFNGLAREPROGRAMSRESIDENTNVPROC)(GLsizei n, const GLuint* programs, GLboolean* residences); + typedef void(APIENTRYP PFNGLBINDPROGRAMNVPROC)(GLenum target, GLuint id); + typedef void(APIENTRYP PFNGLDELETEPROGRAMSNVPROC)(GLsizei n, const GLuint* programs); + typedef void(APIENTRYP PFNGLEXECUTEPROGRAMNVPROC)(GLenum target, GLuint id, const GLfloat* params); + typedef void(APIENTRYP PFNGLGENPROGRAMSNVPROC)(GLsizei n, GLuint* programs); + typedef void(APIENTRYP + PFNGLGETPROGRAMPARAMETERDVNVPROC)(GLenum target, GLuint index, GLenum pname, GLdouble* params); + typedef void(APIENTRYP + PFNGLGETPROGRAMPARAMETERFVNVPROC)(GLenum target, GLuint index, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETPROGRAMIVNVPROC)(GLuint id, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC)(GLuint id, GLenum pname, GLubyte* program); + typedef void(APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC)(GLenum target, GLuint address, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC)(GLuint index, GLenum pname, GLdouble* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC)(GLuint index, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC)(GLuint index, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC)(GLuint index, GLenum pname, void** pointer); + typedef GLboolean(APIENTRYP PFNGLISPROGRAMNVPROC)(GLuint id); + typedef void(APIENTRYP PFNGLLOADPROGRAMNVPROC)(GLenum target, GLuint id, GLsizei len, const GLubyte* program); + typedef void(APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC)( + GLenum target, + GLuint index, + GLdouble x, + GLdouble y, + GLdouble z, + GLdouble w + ); + typedef void(APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC)(GLenum target, GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC)( + GLenum target, + GLuint index, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w + ); + typedef void(APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC)(GLenum target, GLuint index, const GLfloat* v); + typedef void(APIENTRYP + PFNGLPROGRAMPARAMETERS4DVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLdouble* v); + typedef void(APIENTRYP + PFNGLPROGRAMPARAMETERS4FVNVPROC)(GLenum target, GLuint index, GLsizei count, const GLfloat* v); + typedef void(APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC)(GLsizei n, const GLuint* programs); + typedef void(APIENTRYP PFNGLTRACKMATRIXNVPROC)(GLenum target, GLuint address, GLenum matrix, GLenum transform); + typedef void(APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC)( + GLuint index, + GLint fsize, + GLenum type, + GLsizei stride, + const void* pointer + ); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1DNVPROC)(GLuint index, GLdouble x); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1FNVPROC)(GLuint index, GLfloat x); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1SNVPROC)(GLuint index, GLshort x); + typedef void(APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2DNVPROC)(GLuint index, GLdouble x, GLdouble y); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2FNVPROC)(GLuint index, GLfloat x, GLfloat y); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2SNVPROC)(GLuint index, GLshort x, GLshort y); + typedef void(APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3DNVPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3FNVPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3SNVPROC)(GLuint index, GLshort x, GLshort y, GLshort z); + typedef void(APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4DNVPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC)(GLuint index, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4FNVPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC)(GLuint index, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4SNVPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC)(GLuint index, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + typedef void(APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC)(GLuint index, const GLubyte* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC)(GLuint index, GLsizei count, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC)(GLuint index, GLsizei count, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC)(GLuint index, GLsizei count, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC)(GLuint index, GLsizei count, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC)(GLuint index, GLsizei count, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC)(GLuint index, GLsizei count, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC)(GLuint index, GLsizei count, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC)(GLuint index, GLsizei count, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC)(GLuint index, GLsizei count, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC)(GLuint index, GLsizei count, const GLdouble* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC)(GLuint index, GLsizei count, const GLfloat* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC)(GLuint index, GLsizei count, const GLshort* v); + typedef void(APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC)(GLuint index, GLsizei count, const GLubyte* v); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLboolean APIENTRY glAreProgramsResidentNV(GLsizei n, const GLuint* programs, GLboolean* residences); + GLAPI void APIENTRY glBindProgramNV(GLenum target, GLuint id); + GLAPI void APIENTRY glDeleteProgramsNV(GLsizei n, const GLuint* programs); + GLAPI void APIENTRY glExecuteProgramNV(GLenum target, GLuint id, const GLfloat* params); + GLAPI void APIENTRY glGenProgramsNV(GLsizei n, GLuint* programs); + GLAPI void APIENTRY glGetProgramParameterdvNV(GLenum target, GLuint index, GLenum pname, GLdouble* params); + GLAPI void APIENTRY glGetProgramParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetProgramivNV(GLuint id, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetProgramStringNV(GLuint id, GLenum pname, GLubyte* program); + GLAPI void APIENTRY glGetTrackMatrixivNV(GLenum target, GLuint address, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetVertexAttribdvNV(GLuint index, GLenum pname, GLdouble* params); + GLAPI void APIENTRY glGetVertexAttribfvNV(GLuint index, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetVertexAttribivNV(GLuint index, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetVertexAttribPointervNV(GLuint index, GLenum pname, void** pointer); + GLAPI GLboolean APIENTRY glIsProgramNV(GLuint id); + GLAPI void APIENTRY glLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte* program); + GLAPI void APIENTRY + glProgramParameter4dNV(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glProgramParameter4dvNV(GLenum target, GLuint index, const GLdouble* v); + GLAPI void APIENTRY glProgramParameter4fNV(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + GLAPI void APIENTRY glProgramParameter4fvNV(GLenum target, GLuint index, const GLfloat* v); + GLAPI void APIENTRY glProgramParameters4dvNV(GLenum target, GLuint index, GLsizei count, const GLdouble* v); + GLAPI void APIENTRY glProgramParameters4fvNV(GLenum target, GLuint index, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY glRequestResidentProgramsNV(GLsizei n, const GLuint* programs); + GLAPI void APIENTRY glTrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform); + GLAPI void APIENTRY + glVertexAttribPointerNV(GLuint index, GLint fsize, GLenum type, GLsizei stride, const void* pointer); + GLAPI void APIENTRY glVertexAttrib1dNV(GLuint index, GLdouble x); + GLAPI void APIENTRY glVertexAttrib1dvNV(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib1fNV(GLuint index, GLfloat x); + GLAPI void APIENTRY glVertexAttrib1fvNV(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib1sNV(GLuint index, GLshort x); + GLAPI void APIENTRY glVertexAttrib1svNV(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y); + GLAPI void APIENTRY glVertexAttrib2dvNV(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y); + GLAPI void APIENTRY glVertexAttrib2fvNV(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib2sNV(GLuint index, GLshort x, GLshort y); + GLAPI void APIENTRY glVertexAttrib2svNV(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z); + GLAPI void APIENTRY glVertexAttrib3dvNV(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glVertexAttrib3fvNV(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z); + GLAPI void APIENTRY glVertexAttrib3svNV(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); + GLAPI void APIENTRY glVertexAttrib4dvNV(GLuint index, const GLdouble* v); + GLAPI void APIENTRY glVertexAttrib4fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + GLAPI void APIENTRY glVertexAttrib4fvNV(GLuint index, const GLfloat* v); + GLAPI void APIENTRY glVertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); + GLAPI void APIENTRY glVertexAttrib4svNV(GLuint index, const GLshort* v); + GLAPI void APIENTRY glVertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); + GLAPI void APIENTRY glVertexAttrib4ubvNV(GLuint index, const GLubyte* v); + GLAPI void APIENTRY glVertexAttribs1dvNV(GLuint index, GLsizei count, const GLdouble* v); + GLAPI void APIENTRY glVertexAttribs1fvNV(GLuint index, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY glVertexAttribs1svNV(GLuint index, GLsizei count, const GLshort* v); + GLAPI void APIENTRY glVertexAttribs2dvNV(GLuint index, GLsizei count, const GLdouble* v); + GLAPI void APIENTRY glVertexAttribs2fvNV(GLuint index, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY glVertexAttribs2svNV(GLuint index, GLsizei count, const GLshort* v); + GLAPI void APIENTRY glVertexAttribs3dvNV(GLuint index, GLsizei count, const GLdouble* v); + GLAPI void APIENTRY glVertexAttribs3fvNV(GLuint index, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY glVertexAttribs3svNV(GLuint index, GLsizei count, const GLshort* v); + GLAPI void APIENTRY glVertexAttribs4dvNV(GLuint index, GLsizei count, const GLdouble* v); + GLAPI void APIENTRY glVertexAttribs4fvNV(GLuint index, GLsizei count, const GLfloat* v); + GLAPI void APIENTRY glVertexAttribs4svNV(GLuint index, GLsizei count, const GLshort* v); + GLAPI void APIENTRY glVertexAttribs4ubvNV(GLuint index, GLsizei count, const GLubyte* v); +#endif +#endif /* GL_NV_vertex_program */ + +#ifndef GL_NV_vertex_program1_1 +#define GL_NV_vertex_program1_1 1 +#endif /* GL_NV_vertex_program1_1 */ + +#ifndef GL_NV_vertex_program2 +#define GL_NV_vertex_program2 1 +#endif /* GL_NV_vertex_program2 */ + +#ifndef GL_NV_vertex_program2_option +#define GL_NV_vertex_program2_option 1 +#endif /* GL_NV_vertex_program2_option */ + +#ifndef GL_NV_vertex_program3 +#define GL_NV_vertex_program3 1 +#endif /* GL_NV_vertex_program3 */ + +#ifndef GL_NV_vertex_program4 +#define GL_NV_vertex_program4 1 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD +#endif /* GL_NV_vertex_program4 */ + +#ifndef GL_NV_video_capture +#define GL_NV_video_capture 1 +#define GL_VIDEO_BUFFER_NV 0x9020 +#define GL_VIDEO_BUFFER_BINDING_NV 0x9021 +#define GL_FIELD_UPPER_NV 0x9022 +#define GL_FIELD_LOWER_NV 0x9023 +#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024 +#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025 +#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026 +#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027 +#define GL_VIDEO_BUFFER_PITCH_NV 0x9028 +#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029 +#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A +#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B +#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C +#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D +#define GL_PARTIAL_SUCCESS_NV 0x902E +#define GL_SUCCESS_NV 0x902F +#define GL_FAILURE_NV 0x9030 +#define GL_YCBYCR8_422_NV 0x9031 +#define GL_YCBAYCR8A_4224_NV 0x9032 +#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033 +#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034 +#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035 +#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036 +#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037 +#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038 +#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039 +#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A +#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B +#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C + typedef void(APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC)(GLuint video_capture_slot); + typedef void(APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)( + GLuint video_capture_slot, + GLuint stream, + GLenum frame_region, + GLintptrARB offset + ); + typedef void(APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)( + GLuint video_capture_slot, + GLuint stream, + GLenum frame_region, + GLenum target, + GLuint texture + ); + typedef void(APIENTRYP PFNGLENDVIDEOCAPTURENVPROC)(GLuint video_capture_slot); + typedef void(APIENTRYP PFNGLGETVIDEOCAPTUREIVNVPROC)(GLuint video_capture_slot, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)( + GLuint video_capture_slot, + GLuint stream, + GLenum pname, + GLint* params + ); + typedef void(APIENTRYP PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)( + GLuint video_capture_slot, + GLuint stream, + GLenum pname, + GLfloat* params + ); + typedef void(APIENTRYP PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)( + GLuint video_capture_slot, + GLuint stream, + GLenum pname, + GLdouble* params + ); + typedef GLenum(APIENTRYP PFNGLVIDEOCAPTURENVPROC)( + GLuint video_capture_slot, + GLuint* sequence_num, + GLuint64EXT* capture_time + ); + typedef void(APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)( + GLuint video_capture_slot, + GLuint stream, + GLenum pname, + const GLint* params + ); + typedef void(APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)( + GLuint video_capture_slot, + GLuint stream, + GLenum pname, + const GLfloat* params + ); + typedef void(APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)( + GLuint video_capture_slot, + GLuint stream, + GLenum pname, + const GLdouble* params + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glBeginVideoCaptureNV(GLuint video_capture_slot); + GLAPI void APIENTRY + glBindVideoCaptureStreamBufferNV(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); + GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV( + GLuint video_capture_slot, + GLuint stream, + GLenum frame_region, + GLenum target, + GLuint texture + ); + GLAPI void APIENTRY glEndVideoCaptureNV(GLuint video_capture_slot); + GLAPI void APIENTRY glGetVideoCaptureivNV(GLuint video_capture_slot, GLenum pname, GLint* params); + GLAPI void APIENTRY + glGetVideoCaptureStreamivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLint* params); + GLAPI void APIENTRY + glGetVideoCaptureStreamfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat* params); + GLAPI void APIENTRY + glGetVideoCaptureStreamdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble* params); + GLAPI GLenum APIENTRY glVideoCaptureNV(GLuint video_capture_slot, GLuint* sequence_num, GLuint64EXT* capture_time); + GLAPI void APIENTRY + glVideoCaptureStreamParameterivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint* params); + GLAPI void APIENTRY + glVideoCaptureStreamParameterfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY + glVideoCaptureStreamParameterdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble* params); +#endif +#endif /* GL_NV_video_capture */ + +#ifndef GL_NV_viewport_array2 +#define GL_NV_viewport_array2 1 +#endif /* GL_NV_viewport_array2 */ + +#ifndef GL_NV_viewport_swizzle +#define GL_NV_viewport_swizzle 1 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357 +#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358 +#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359 +#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A +#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B + typedef void(APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC)( + GLuint index, + GLenum swizzlex, + GLenum swizzley, + GLenum swizzlez, + GLenum swizzlew + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glViewportSwizzleNV(GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#endif +#endif /* GL_NV_viewport_swizzle */ + +#ifndef GL_OML_interlace +#define GL_OML_interlace 1 +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_OML 0x8981 +#endif /* GL_OML_interlace */ + +#ifndef GL_OML_resample +#define GL_OML_resample 1 +#define GL_PACK_RESAMPLE_OML 0x8984 +#define GL_UNPACK_RESAMPLE_OML 0x8985 +#define GL_RESAMPLE_REPLICATE_OML 0x8986 +#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 +#define GL_RESAMPLE_AVERAGE_OML 0x8988 +#define GL_RESAMPLE_DECIMATE_OML 0x8989 +#endif /* GL_OML_resample */ + +#ifndef GL_OML_subsample +#define GL_OML_subsample 1 +#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 +#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 +#endif /* GL_OML_subsample */ + +#ifndef GL_OVR_multiview +#define GL_OVR_multiview 1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632 +#define GL_MAX_VIEWS_OVR 0x9631 +#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633 + typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)( + GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint baseViewIndex, + GLsizei numViews + ); + typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)( + GLuint framebuffer, + GLenum attachment, + GLuint texture, + GLint level, + GLint baseViewIndex, + GLsizei numViews + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFramebufferTextureMultiviewOVR( + GLenum target, + GLenum attachment, + GLuint texture, + GLint level, + GLint baseViewIndex, + GLsizei numViews + ); + GLAPI void APIENTRY glNamedFramebufferTextureMultiviewOVR( + GLuint framebuffer, + GLenum attachment, + GLuint texture, + GLint level, + GLint baseViewIndex, + GLsizei numViews + ); +#endif +#endif /* GL_OVR_multiview */ + +#ifndef GL_OVR_multiview2 +#define GL_OVR_multiview2 1 +#endif /* GL_OVR_multiview2 */ + +#ifndef GL_PGI_misc_hints +#define GL_PGI_misc_hints 1 +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 +#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD +#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 +#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C +#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E +#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F +#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 +#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 +#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 +#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 +#define GL_CLIP_NEAR_HINT_PGI 0x1A220 +#define GL_CLIP_FAR_HINT_PGI 0x1A221 +#define GL_WIDE_LINE_HINT_PGI 0x1A222 +#define GL_BACK_NORMALS_HINT_PGI 0x1A223 + typedef void(APIENTRYP PFNGLHINTPGIPROC)(GLenum target, GLint mode); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glHintPGI(GLenum target, GLint mode); +#endif +#endif /* GL_PGI_misc_hints */ + +#ifndef GL_PGI_vertex_hints +#define GL_PGI_vertex_hints 1 +#define GL_VERTEX_DATA_HINT_PGI 0x1A22A +#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B +#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C +#define GL_MAX_VERTEX_HINT_PGI 0x1A22D +#define GL_COLOR3_BIT_PGI 0x00010000 +#define GL_COLOR4_BIT_PGI 0x00020000 +#define GL_EDGEFLAG_BIT_PGI 0x00040000 +#define GL_INDEX_BIT_PGI 0x00080000 +#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 +#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 +#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 +#define GL_MAT_EMISSION_BIT_PGI 0x00800000 +#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 +#define GL_MAT_SHININESS_BIT_PGI 0x02000000 +#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 +#define GL_NORMAL_BIT_PGI 0x08000000 +#define GL_TEXCOORD1_BIT_PGI 0x10000000 +#define GL_TEXCOORD2_BIT_PGI 0x20000000 +#define GL_TEXCOORD3_BIT_PGI 0x40000000 +#define GL_TEXCOORD4_BIT_PGI 0x80000000 +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 +#endif /* GL_PGI_vertex_hints */ + +#ifndef GL_REND_screen_coordinates +#define GL_REND_screen_coordinates 1 +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_INVERTED_SCREEN_W_REND 0x8491 +#endif /* GL_REND_screen_coordinates */ + +#ifndef GL_S3_s3tc +#define GL_S3_s3tc 1 +#define GL_RGB_S3TC 0x83A0 +#define GL_RGB4_S3TC 0x83A1 +#define GL_RGBA_S3TC 0x83A2 +#define GL_RGBA4_S3TC 0x83A3 +#define GL_RGBA_DXT5_S3TC 0x83A4 +#define GL_RGBA4_DXT5_S3TC 0x83A5 +#endif /* GL_S3_s3tc */ + +#ifndef GL_SGIS_detail_texture +#define GL_SGIS_detail_texture 1 +#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 +#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 +#define GL_LINEAR_DETAIL_SGIS 0x8097 +#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 +#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 +#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A +#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B +#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C + typedef void(APIENTRYP PFNGLDETAILTEXFUNCSGISPROC)(GLenum target, GLsizei n, const GLfloat* points); + typedef void(APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC)(GLenum target, GLfloat* points); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDetailTexFuncSGIS(GLenum target, GLsizei n, const GLfloat* points); + GLAPI void APIENTRY glGetDetailTexFuncSGIS(GLenum target, GLfloat* points); +#endif +#endif /* GL_SGIS_detail_texture */ + +#ifndef GL_SGIS_fog_function +#define GL_SGIS_fog_function 1 +#define GL_FOG_FUNC_SGIS 0x812A +#define GL_FOG_FUNC_POINTS_SGIS 0x812B +#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C + typedef void(APIENTRYP PFNGLFOGFUNCSGISPROC)(GLsizei n, const GLfloat* points); + typedef void(APIENTRYP PFNGLGETFOGFUNCSGISPROC)(GLfloat* points); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFogFuncSGIS(GLsizei n, const GLfloat* points); + GLAPI void APIENTRY glGetFogFuncSGIS(GLfloat* points); +#endif +#endif /* GL_SGIS_fog_function */ + +#ifndef GL_SGIS_generate_mipmap +#define GL_SGIS_generate_mipmap 1 +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 +#endif /* GL_SGIS_generate_mipmap */ + +#ifndef GL_SGIS_multisample +#define GL_SGIS_multisample 1 +#define GL_MULTISAMPLE_SGIS 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F +#define GL_SAMPLE_MASK_SGIS 0x80A0 +#define GL_1PASS_SGIS 0x80A1 +#define GL_2PASS_0_SGIS 0x80A2 +#define GL_2PASS_1_SGIS 0x80A3 +#define GL_4PASS_0_SGIS 0x80A4 +#define GL_4PASS_1_SGIS 0x80A5 +#define GL_4PASS_2_SGIS 0x80A6 +#define GL_4PASS_3_SGIS 0x80A7 +#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 +#define GL_SAMPLES_SGIS 0x80A9 +#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA +#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB +#define GL_SAMPLE_PATTERN_SGIS 0x80AC + typedef void(APIENTRYP PFNGLSAMPLEMASKSGISPROC)(GLclampf value, GLboolean invert); + typedef void(APIENTRYP PFNGLSAMPLEPATTERNSGISPROC)(GLenum pattern); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glSampleMaskSGIS(GLclampf value, GLboolean invert); + GLAPI void APIENTRY glSamplePatternSGIS(GLenum pattern); +#endif +#endif /* GL_SGIS_multisample */ + +#ifndef GL_SGIS_pixel_texture +#define GL_SGIS_pixel_texture 1 +#define GL_PIXEL_TEXTURE_SGIS 0x8353 +#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 +#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 +#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 + typedef void(APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC)(GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC)(GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, GLfloat* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPixelTexGenParameteriSGIS(GLenum pname, GLint param); + GLAPI void APIENTRY glPixelTexGenParameterivSGIS(GLenum pname, const GLint* params); + GLAPI void APIENTRY glPixelTexGenParameterfSGIS(GLenum pname, GLfloat param); + GLAPI void APIENTRY glPixelTexGenParameterfvSGIS(GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS(GLenum pname, GLint* params); + GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS(GLenum pname, GLfloat* params); +#endif +#endif /* GL_SGIS_pixel_texture */ + +#ifndef GL_SGIS_point_line_texgen +#define GL_SGIS_point_line_texgen 1 +#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 +#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 +#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 +#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 +#define GL_EYE_POINT_SGIS 0x81F4 +#define GL_OBJECT_POINT_SGIS 0x81F5 +#define GL_EYE_LINE_SGIS 0x81F6 +#define GL_OBJECT_LINE_SGIS 0x81F7 +#endif /* GL_SGIS_point_line_texgen */ + +#ifndef GL_SGIS_point_parameters +#define GL_SGIS_point_parameters 1 +#define GL_POINT_SIZE_MIN_SGIS 0x8126 +#define GL_POINT_SIZE_MAX_SGIS 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 +#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 + typedef void(APIENTRYP PFNGLPOINTPARAMETERFSGISPROC)(GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC)(GLenum pname, const GLfloat* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPointParameterfSGIS(GLenum pname, GLfloat param); + GLAPI void APIENTRY glPointParameterfvSGIS(GLenum pname, const GLfloat* params); +#endif +#endif /* GL_SGIS_point_parameters */ + +#ifndef GL_SGIS_sharpen_texture +#define GL_SGIS_sharpen_texture 1 +#define GL_LINEAR_SHARPEN_SGIS 0x80AD +#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE +#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF +#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 + typedef void(APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC)(GLenum target, GLsizei n, const GLfloat* points); + typedef void(APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC)(GLenum target, GLfloat* points); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glSharpenTexFuncSGIS(GLenum target, GLsizei n, const GLfloat* points); + GLAPI void APIENTRY glGetSharpenTexFuncSGIS(GLenum target, GLfloat* points); +#endif +#endif /* GL_SGIS_sharpen_texture */ + +#ifndef GL_SGIS_texture4D +#define GL_SGIS_texture4D 1 +#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 +#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 +#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 +#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 +#define GL_TEXTURE_4D_SGIS 0x8134 +#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 +#define GL_TEXTURE_4DSIZE_SGIS 0x8136 +#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 +#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 +#define GL_TEXTURE_4D_BINDING_SGIS 0x814F + typedef void(APIENTRYP PFNGLTEXIMAGE4DSGISPROC)( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLsizei size4d, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + typedef void(APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC)( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint woffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLsizei size4d, + GLenum format, + GLenum type, + const void* pixels + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTexImage4DSGIS( + GLenum target, + GLint level, + GLenum internalformat, + GLsizei width, + GLsizei height, + GLsizei depth, + GLsizei size4d, + GLint border, + GLenum format, + GLenum type, + const void* pixels + ); + GLAPI void APIENTRY glTexSubImage4DSGIS( + GLenum target, + GLint level, + GLint xoffset, + GLint yoffset, + GLint zoffset, + GLint woffset, + GLsizei width, + GLsizei height, + GLsizei depth, + GLsizei size4d, + GLenum format, + GLenum type, + const void* pixels + ); +#endif +#endif /* GL_SGIS_texture4D */ + +#ifndef GL_SGIS_texture_border_clamp +#define GL_SGIS_texture_border_clamp 1 +#define GL_CLAMP_TO_BORDER_SGIS 0x812D +#endif /* GL_SGIS_texture_border_clamp */ + +#ifndef GL_SGIS_texture_color_mask +#define GL_SGIS_texture_color_mask 1 +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF + typedef void(APIENTRYP + PFNGLTEXTURECOLORMASKSGISPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTextureColorMaskSGIS(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +#endif +#endif /* GL_SGIS_texture_color_mask */ + +#ifndef GL_SGIS_texture_edge_clamp +#define GL_SGIS_texture_edge_clamp 1 +#define GL_CLAMP_TO_EDGE_SGIS 0x812F +#endif /* GL_SGIS_texture_edge_clamp */ + +#ifndef GL_SGIS_texture_filter4 +#define GL_SGIS_texture_filter4 1 +#define GL_FILTER4_SGIS 0x8146 +#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 + typedef void(APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, GLfloat* weights); + typedef void(APIENTRYP PFNGLTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, GLsizei n, const GLfloat* weights); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGetTexFilterFuncSGIS(GLenum target, GLenum filter, GLfloat* weights); + GLAPI void APIENTRY glTexFilterFuncSGIS(GLenum target, GLenum filter, GLsizei n, const GLfloat* weights); +#endif +#endif /* GL_SGIS_texture_filter4 */ + +#ifndef GL_SGIS_texture_lod +#define GL_SGIS_texture_lod 1 +#define GL_TEXTURE_MIN_LOD_SGIS 0x813A +#define GL_TEXTURE_MAX_LOD_SGIS 0x813B +#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C +#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D +#endif /* GL_SGIS_texture_lod */ + +#ifndef GL_SGIS_texture_select +#define GL_SGIS_texture_select 1 +#define GL_DUAL_ALPHA4_SGIS 0x8110 +#define GL_DUAL_ALPHA8_SGIS 0x8111 +#define GL_DUAL_ALPHA12_SGIS 0x8112 +#define GL_DUAL_ALPHA16_SGIS 0x8113 +#define GL_DUAL_LUMINANCE4_SGIS 0x8114 +#define GL_DUAL_LUMINANCE8_SGIS 0x8115 +#define GL_DUAL_LUMINANCE12_SGIS 0x8116 +#define GL_DUAL_LUMINANCE16_SGIS 0x8117 +#define GL_DUAL_INTENSITY4_SGIS 0x8118 +#define GL_DUAL_INTENSITY8_SGIS 0x8119 +#define GL_DUAL_INTENSITY12_SGIS 0x811A +#define GL_DUAL_INTENSITY16_SGIS 0x811B +#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C +#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D +#define GL_QUAD_ALPHA4_SGIS 0x811E +#define GL_QUAD_ALPHA8_SGIS 0x811F +#define GL_QUAD_LUMINANCE4_SGIS 0x8120 +#define GL_QUAD_LUMINANCE8_SGIS 0x8121 +#define GL_QUAD_INTENSITY4_SGIS 0x8122 +#define GL_QUAD_INTENSITY8_SGIS 0x8123 +#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 +#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 +#endif /* GL_SGIS_texture_select */ + +#ifndef GL_SGIX_async +#define GL_SGIX_async 1 +#define GL_ASYNC_MARKER_SGIX 0x8329 + typedef void(APIENTRYP PFNGLASYNCMARKERSGIXPROC)(GLuint marker); + typedef GLint(APIENTRYP PFNGLFINISHASYNCSGIXPROC)(GLuint* markerp); + typedef GLint(APIENTRYP PFNGLPOLLASYNCSGIXPROC)(GLuint* markerp); + typedef GLuint(APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC)(GLsizei range); + typedef void(APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC)(GLuint marker, GLsizei range); + typedef GLboolean(APIENTRYP PFNGLISASYNCMARKERSGIXPROC)(GLuint marker); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glAsyncMarkerSGIX(GLuint marker); + GLAPI GLint APIENTRY glFinishAsyncSGIX(GLuint* markerp); + GLAPI GLint APIENTRY glPollAsyncSGIX(GLuint* markerp); + GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX(GLsizei range); + GLAPI void APIENTRY glDeleteAsyncMarkersSGIX(GLuint marker, GLsizei range); + GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX(GLuint marker); +#endif +#endif /* GL_SGIX_async */ + +#ifndef GL_SGIX_async_histogram +#define GL_SGIX_async_histogram 1 +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D +#endif /* GL_SGIX_async_histogram */ + +#ifndef GL_SGIX_async_pixel +#define GL_SGIX_async_pixel 1 +#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C +#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D +#define GL_ASYNC_READ_PIXELS_SGIX 0x835E +#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F +#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 +#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 +#endif /* GL_SGIX_async_pixel */ + +#ifndef GL_SGIX_blend_alpha_minmax +#define GL_SGIX_blend_alpha_minmax 1 +#define GL_ALPHA_MIN_SGIX 0x8320 +#define GL_ALPHA_MAX_SGIX 0x8321 +#endif /* GL_SGIX_blend_alpha_minmax */ + +#ifndef GL_SGIX_calligraphic_fragment +#define GL_SGIX_calligraphic_fragment 1 +#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 +#endif /* GL_SGIX_calligraphic_fragment */ + +#ifndef GL_SGIX_clipmap +#define GL_SGIX_clipmap 1 +#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 +#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 +#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 +#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 +#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 +#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 +#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 +#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 +#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 +#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D +#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E +#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F +#endif /* GL_SGIX_clipmap */ + +#ifndef GL_SGIX_convolution_accuracy +#define GL_SGIX_convolution_accuracy 1 +#define GL_CONVOLUTION_HINT_SGIX 0x8316 +#endif /* GL_SGIX_convolution_accuracy */ + +#ifndef GL_SGIX_depth_pass_instrument +#define GL_SGIX_depth_pass_instrument 1 +#endif /* GL_SGIX_depth_pass_instrument */ + +#ifndef GL_SGIX_depth_texture +#define GL_SGIX_depth_texture 1 +#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 +#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 +#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 +#endif /* GL_SGIX_depth_texture */ + +#ifndef GL_SGIX_flush_raster +#define GL_SGIX_flush_raster 1 + typedef void(APIENTRYP PFNGLFLUSHRASTERSGIXPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFlushRasterSGIX(void); +#endif +#endif /* GL_SGIX_flush_raster */ + +#ifndef GL_SGIX_fog_offset +#define GL_SGIX_fog_offset 1 +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 +#endif /* GL_SGIX_fog_offset */ + +#ifndef GL_SGIX_fragment_lighting +#define GL_SGIX_fragment_lighting 1 +#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 +#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 +#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 +#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 +#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 +#define GL_LIGHT_ENV_MODE_SGIX 0x8407 +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B +#define GL_FRAGMENT_LIGHT0_SGIX 0x840C +#define GL_FRAGMENT_LIGHT1_SGIX 0x840D +#define GL_FRAGMENT_LIGHT2_SGIX 0x840E +#define GL_FRAGMENT_LIGHT3_SGIX 0x840F +#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 +#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 +#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 +#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 + typedef void(APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC)(GLenum face, GLenum mode); + typedef void(APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC)(GLenum light, GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC)(GLenum light, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC)(GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)(GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC)(GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)(GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC)(GLenum face, GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC)(GLenum face, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, const GLint* params); + typedef void(APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLLIGHTENVISGIXPROC)(GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFragmentColorMaterialSGIX(GLenum face, GLenum mode); + GLAPI void APIENTRY glFragmentLightfSGIX(GLenum light, GLenum pname, GLfloat param); + GLAPI void APIENTRY glFragmentLightfvSGIX(GLenum light, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glFragmentLightiSGIX(GLenum light, GLenum pname, GLint param); + GLAPI void APIENTRY glFragmentLightivSGIX(GLenum light, GLenum pname, const GLint* params); + GLAPI void APIENTRY glFragmentLightModelfSGIX(GLenum pname, GLfloat param); + GLAPI void APIENTRY glFragmentLightModelfvSGIX(GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glFragmentLightModeliSGIX(GLenum pname, GLint param); + GLAPI void APIENTRY glFragmentLightModelivSGIX(GLenum pname, const GLint* params); + GLAPI void APIENTRY glFragmentMaterialfSGIX(GLenum face, GLenum pname, GLfloat param); + GLAPI void APIENTRY glFragmentMaterialfvSGIX(GLenum face, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glFragmentMaterialiSGIX(GLenum face, GLenum pname, GLint param); + GLAPI void APIENTRY glFragmentMaterialivSGIX(GLenum face, GLenum pname, const GLint* params); + GLAPI void APIENTRY glGetFragmentLightfvSGIX(GLenum light, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetFragmentLightivSGIX(GLenum light, GLenum pname, GLint* params); + GLAPI void APIENTRY glGetFragmentMaterialfvSGIX(GLenum face, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetFragmentMaterialivSGIX(GLenum face, GLenum pname, GLint* params); + GLAPI void APIENTRY glLightEnviSGIX(GLenum pname, GLint param); +#endif +#endif /* GL_SGIX_fragment_lighting */ + +#ifndef GL_SGIX_framezoom +#define GL_SGIX_framezoom 1 +#define GL_FRAMEZOOM_SGIX 0x818B +#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C +#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D + typedef void(APIENTRYP PFNGLFRAMEZOOMSGIXPROC)(GLint factor); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFrameZoomSGIX(GLint factor); +#endif +#endif /* GL_SGIX_framezoom */ + +#ifndef GL_SGIX_igloo_interface +#define GL_SGIX_igloo_interface 1 + typedef void(APIENTRYP PFNGLIGLOOINTERFACESGIXPROC)(GLenum pname, const void* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glIglooInterfaceSGIX(GLenum pname, const void* params); +#endif +#endif /* GL_SGIX_igloo_interface */ + +#ifndef GL_SGIX_instruments +#define GL_SGIX_instruments 1 +#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 +#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 + typedef GLint(APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC)(void); + typedef void(APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC)(GLsizei size, GLint* buffer); + typedef GLint(APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC)(GLint* marker_p); + typedef void(APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC)(GLint marker); + typedef void(APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC)(void); + typedef void(APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC)(GLint marker); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI GLint APIENTRY glGetInstrumentsSGIX(void); + GLAPI void APIENTRY glInstrumentsBufferSGIX(GLsizei size, GLint* buffer); + GLAPI GLint APIENTRY glPollInstrumentsSGIX(GLint* marker_p); + GLAPI void APIENTRY glReadInstrumentsSGIX(GLint marker); + GLAPI void APIENTRY glStartInstrumentsSGIX(void); + GLAPI void APIENTRY glStopInstrumentsSGIX(GLint marker); +#endif +#endif /* GL_SGIX_instruments */ + +#ifndef GL_SGIX_interlace +#define GL_SGIX_interlace 1 +#define GL_INTERLACE_SGIX 0x8094 +#endif /* GL_SGIX_interlace */ + +#ifndef GL_SGIX_ir_instrument1 +#define GL_SGIX_ir_instrument1 1 +#define GL_IR_INSTRUMENT1_SGIX 0x817F +#endif /* GL_SGIX_ir_instrument1 */ + +#ifndef GL_SGIX_list_priority +#define GL_SGIX_list_priority 1 +#define GL_LIST_PRIORITY_SGIX 0x8182 + typedef void(APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, GLint* params); + typedef void(APIENTRYP PFNGLLISTPARAMETERFSGIXPROC)(GLuint list, GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLLISTPARAMETERISGIXPROC)(GLuint list, GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, const GLint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGetListParameterfvSGIX(GLuint list, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetListParameterivSGIX(GLuint list, GLenum pname, GLint* params); + GLAPI void APIENTRY glListParameterfSGIX(GLuint list, GLenum pname, GLfloat param); + GLAPI void APIENTRY glListParameterfvSGIX(GLuint list, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glListParameteriSGIX(GLuint list, GLenum pname, GLint param); + GLAPI void APIENTRY glListParameterivSGIX(GLuint list, GLenum pname, const GLint* params); +#endif +#endif /* GL_SGIX_list_priority */ + +#ifndef GL_SGIX_pixel_texture +#define GL_SGIX_pixel_texture 1 +#define GL_PIXEL_TEX_GEN_SGIX 0x8139 +#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B + typedef void(APIENTRYP PFNGLPIXELTEXGENSGIXPROC)(GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glPixelTexGenSGIX(GLenum mode); +#endif +#endif /* GL_SGIX_pixel_texture */ + +#ifndef GL_SGIX_pixel_tiles +#define GL_SGIX_pixel_tiles 1 +#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E +#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F +#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 +#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 +#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 +#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 +#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 +#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 +#endif /* GL_SGIX_pixel_tiles */ + +#ifndef GL_SGIX_polynomial_ffd +#define GL_SGIX_polynomial_ffd 1 +#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 +#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 +#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 +#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 +#define GL_DEFORMATIONS_MASK_SGIX 0x8196 +#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 + typedef void(APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC)( + GLenum target, + GLdouble u1, + GLdouble u2, + GLint ustride, + GLint uorder, + GLdouble v1, + GLdouble v2, + GLint vstride, + GLint vorder, + GLdouble w1, + GLdouble w2, + GLint wstride, + GLint worder, + const GLdouble* points + ); + typedef void(APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC)( + GLenum target, + GLfloat u1, + GLfloat u2, + GLint ustride, + GLint uorder, + GLfloat v1, + GLfloat v2, + GLint vstride, + GLint vorder, + GLfloat w1, + GLfloat w2, + GLint wstride, + GLint worder, + const GLfloat* points + ); + typedef void(APIENTRYP PFNGLDEFORMSGIXPROC)(GLbitfield mask); + typedef void(APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)(GLbitfield mask); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDeformationMap3dSGIX( + GLenum target, + GLdouble u1, + GLdouble u2, + GLint ustride, + GLint uorder, + GLdouble v1, + GLdouble v2, + GLint vstride, + GLint vorder, + GLdouble w1, + GLdouble w2, + GLint wstride, + GLint worder, + const GLdouble* points + ); + GLAPI void APIENTRY glDeformationMap3fSGIX( + GLenum target, + GLfloat u1, + GLfloat u2, + GLint ustride, + GLint uorder, + GLfloat v1, + GLfloat v2, + GLint vstride, + GLint vorder, + GLfloat w1, + GLfloat w2, + GLint wstride, + GLint worder, + const GLfloat* points + ); + GLAPI void APIENTRY glDeformSGIX(GLbitfield mask); + GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX(GLbitfield mask); +#endif +#endif /* GL_SGIX_polynomial_ffd */ + +#ifndef GL_SGIX_reference_plane +#define GL_SGIX_reference_plane 1 +#define GL_REFERENCE_PLANE_SGIX 0x817D +#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E + typedef void(APIENTRYP PFNGLREFERENCEPLANESGIXPROC)(const GLdouble* equation); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glReferencePlaneSGIX(const GLdouble* equation); +#endif +#endif /* GL_SGIX_reference_plane */ + +#ifndef GL_SGIX_resample +#define GL_SGIX_resample 1 +#define GL_PACK_RESAMPLE_SGIX 0x842E +#define GL_UNPACK_RESAMPLE_SGIX 0x842F +#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#endif /* GL_SGIX_resample */ + +#ifndef GL_SGIX_scalebias_hint +#define GL_SGIX_scalebias_hint 1 +#define GL_SCALEBIAS_HINT_SGIX 0x8322 +#endif /* GL_SGIX_scalebias_hint */ + +#ifndef GL_SGIX_shadow +#define GL_SGIX_shadow 1 +#define GL_TEXTURE_COMPARE_SGIX 0x819A +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B +#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C +#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D +#endif /* GL_SGIX_shadow */ + +#ifndef GL_SGIX_shadow_ambient +#define GL_SGIX_shadow_ambient 1 +#define GL_SHADOW_AMBIENT_SGIX 0x80BF +#endif /* GL_SGIX_shadow_ambient */ + +#ifndef GL_SGIX_sprite +#define GL_SGIX_sprite 1 +#define GL_SPRITE_SGIX 0x8148 +#define GL_SPRITE_MODE_SGIX 0x8149 +#define GL_SPRITE_AXIS_SGIX 0x814A +#define GL_SPRITE_TRANSLATION_SGIX 0x814B +#define GL_SPRITE_AXIAL_SGIX 0x814C +#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D +#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E + typedef void(APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC)(GLenum pname, GLfloat param); + typedef void(APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC)(GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC)(GLenum pname, GLint param); + typedef void(APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC)(GLenum pname, const GLint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glSpriteParameterfSGIX(GLenum pname, GLfloat param); + GLAPI void APIENTRY glSpriteParameterfvSGIX(GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glSpriteParameteriSGIX(GLenum pname, GLint param); + GLAPI void APIENTRY glSpriteParameterivSGIX(GLenum pname, const GLint* params); +#endif +#endif /* GL_SGIX_sprite */ + +#ifndef GL_SGIX_subsample +#define GL_SGIX_subsample 1 +#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 +#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 +#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 +#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 +#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 +#endif /* GL_SGIX_subsample */ + +#ifndef GL_SGIX_tag_sample_buffer +#define GL_SGIX_tag_sample_buffer 1 + typedef void(APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glTagSampleBufferSGIX(void); +#endif +#endif /* GL_SGIX_tag_sample_buffer */ + +#ifndef GL_SGIX_texture_add_env +#define GL_SGIX_texture_add_env 1 +#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE +#endif /* GL_SGIX_texture_add_env */ + +#ifndef GL_SGIX_texture_coordinate_clamp +#define GL_SGIX_texture_coordinate_clamp 1 +#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 +#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A +#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B +#endif /* GL_SGIX_texture_coordinate_clamp */ + +#ifndef GL_SGIX_texture_lod_bias +#define GL_SGIX_texture_lod_bias 1 +#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E +#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F +#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 +#endif /* GL_SGIX_texture_lod_bias */ + +#ifndef GL_SGIX_texture_multi_buffer +#define GL_SGIX_texture_multi_buffer 1 +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E +#endif /* GL_SGIX_texture_multi_buffer */ + +#ifndef GL_SGIX_texture_scale_bias +#define GL_SGIX_texture_scale_bias 1 +#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 +#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A +#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B +#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C +#endif /* GL_SGIX_texture_scale_bias */ + +#ifndef GL_SGIX_vertex_preclip +#define GL_SGIX_vertex_preclip 1 +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF +#endif /* GL_SGIX_vertex_preclip */ + +#ifndef GL_SGIX_ycrcb +#define GL_SGIX_ycrcb 1 +#define GL_YCRCB_422_SGIX 0x81BB +#define GL_YCRCB_444_SGIX 0x81BC +#endif /* GL_SGIX_ycrcb */ + +#ifndef GL_SGIX_ycrcb_subsample +#define GL_SGIX_ycrcb_subsample 1 +#endif /* GL_SGIX_ycrcb_subsample */ + +#ifndef GL_SGIX_ycrcba +#define GL_SGIX_ycrcba 1 +#define GL_YCRCB_SGIX 0x8318 +#define GL_YCRCBA_SGIX 0x8319 +#endif /* GL_SGIX_ycrcba */ + +#ifndef GL_SGI_color_matrix +#define GL_SGI_color_matrix 1 +#define GL_COLOR_MATRIX_SGI 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB +#endif /* GL_SGI_color_matrix */ + +#ifndef GL_SGI_color_table +#define GL_SGI_color_table 1 +#define GL_COLOR_TABLE_SGI 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 +#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 +#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 +#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 +#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 +#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF + typedef void(APIENTRYP PFNGLCOLORTABLESGIPROC)( + GLenum target, + GLenum internalformat, + GLsizei width, + GLenum format, + GLenum type, + const void* table + ); + typedef void(APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, const GLfloat* params); + typedef void(APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, const GLint* params); + typedef void(APIENTRYP + PFNGLCOPYCOLORTABLESGIPROC)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + typedef void(APIENTRYP PFNGLGETCOLORTABLESGIPROC)(GLenum target, GLenum format, GLenum type, void* table); + typedef void(APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, GLfloat* params); + typedef void(APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, GLint* params); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY + glColorTableSGI(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void* table); + GLAPI void APIENTRY glColorTableParameterfvSGI(GLenum target, GLenum pname, const GLfloat* params); + GLAPI void APIENTRY glColorTableParameterivSGI(GLenum target, GLenum pname, const GLint* params); + GLAPI void APIENTRY glCopyColorTableSGI(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); + GLAPI void APIENTRY glGetColorTableSGI(GLenum target, GLenum format, GLenum type, void* table); + GLAPI void APIENTRY glGetColorTableParameterfvSGI(GLenum target, GLenum pname, GLfloat* params); + GLAPI void APIENTRY glGetColorTableParameterivSGI(GLenum target, GLenum pname, GLint* params); +#endif +#endif /* GL_SGI_color_table */ + +#ifndef GL_SGI_texture_color_table +#define GL_SGI_texture_color_table 1 +#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC +#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD +#endif /* GL_SGI_texture_color_table */ + +#ifndef GL_SUNX_constant_data +#define GL_SUNX_constant_data 1 +#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 +#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 + typedef void(APIENTRYP PFNGLFINISHTEXTURESUNXPROC)(void); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glFinishTextureSUNX(void); +#endif +#endif /* GL_SUNX_constant_data */ + +#ifndef GL_SUN_convolution_border_modes +#define GL_SUN_convolution_border_modes 1 +#define GL_WRAP_BORDER_SUN 0x81D4 +#endif /* GL_SUN_convolution_border_modes */ + +#ifndef GL_SUN_global_alpha +#define GL_SUN_global_alpha 1 +#define GL_GLOBAL_ALPHA_SUN 0x81D9 +#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA + typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC)(GLbyte factor); + typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC)(GLshort factor); + typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC)(GLint factor); + typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC)(GLfloat factor); + typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC)(GLdouble factor); + typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC)(GLubyte factor); + typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC)(GLushort factor); + typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC)(GLuint factor); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glGlobalAlphaFactorbSUN(GLbyte factor); + GLAPI void APIENTRY glGlobalAlphaFactorsSUN(GLshort factor); + GLAPI void APIENTRY glGlobalAlphaFactoriSUN(GLint factor); + GLAPI void APIENTRY glGlobalAlphaFactorfSUN(GLfloat factor); + GLAPI void APIENTRY glGlobalAlphaFactordSUN(GLdouble factor); + GLAPI void APIENTRY glGlobalAlphaFactorubSUN(GLubyte factor); + GLAPI void APIENTRY glGlobalAlphaFactorusSUN(GLushort factor); + GLAPI void APIENTRY glGlobalAlphaFactoruiSUN(GLuint factor); +#endif +#endif /* GL_SUN_global_alpha */ + +#ifndef GL_SUN_mesh_array +#define GL_SUN_mesh_array 1 +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_TRIANGLE_MESH_SUN 0x8615 + typedef void(APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC)(GLenum mode, GLint first, GLsizei count, GLsizei width); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glDrawMeshArraysSUN(GLenum mode, GLint first, GLsizei count, GLsizei width); +#endif +#endif /* GL_SUN_mesh_array */ + +#ifndef GL_SUN_slice_accum +#define GL_SUN_slice_accum 1 +#define GL_SLICE_ACCUM_SUN 0x85CC +#endif /* GL_SUN_slice_accum */ + +#ifndef GL_SUN_triangle_list +#define GL_SUN_triangle_list 1 +#define GL_RESTART_SUN 0x0001 +#define GL_REPLACE_MIDDLE_SUN 0x0002 +#define GL_REPLACE_OLDEST_SUN 0x0003 +#define GL_TRIANGLE_LIST_SUN 0x81D7 +#define GL_REPLACEMENT_CODE_SUN 0x81D8 +#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 +#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 +#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 +#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 +#define GL_R1UI_V3F_SUN 0x85C4 +#define GL_R1UI_C4UB_V3F_SUN 0x85C5 +#define GL_R1UI_C3F_V3F_SUN 0x85C6 +#define GL_R1UI_N3F_V3F_SUN 0x85C7 +#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 +#define GL_R1UI_T2F_V3F_SUN 0x85C9 +#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA +#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC)(GLuint code); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC)(GLushort code); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC)(GLubyte code); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC)(const GLuint* code); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC)(const GLushort* code); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC)(const GLubyte* code); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC)(GLenum type, GLsizei stride, const void** pointer); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glReplacementCodeuiSUN(GLuint code); + GLAPI void APIENTRY glReplacementCodeusSUN(GLushort code); + GLAPI void APIENTRY glReplacementCodeubSUN(GLubyte code); + GLAPI void APIENTRY glReplacementCodeuivSUN(const GLuint* code); + GLAPI void APIENTRY glReplacementCodeusvSUN(const GLushort* code); + GLAPI void APIENTRY glReplacementCodeubvSUN(const GLubyte* code); + GLAPI void APIENTRY glReplacementCodePointerSUN(GLenum type, GLsizei stride, const void** pointer); +#endif +#endif /* GL_SUN_triangle_list */ + +#ifndef GL_SUN_vertex +#define GL_SUN_vertex 1 + typedef void(APIENTRYP + PFNGLCOLOR4UBVERTEX2FSUNPROC)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); + typedef void(APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC)(const GLubyte* c, const GLfloat* v); + typedef void(APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC)( + GLubyte r, + GLubyte g, + GLubyte b, + GLubyte a, + GLfloat x, + GLfloat y, + GLfloat z + ); + typedef void(APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC)(const GLubyte* c, const GLfloat* v); + typedef void(APIENTRYP + PFNGLCOLOR3FVERTEX3FSUNPROC)(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC)(const GLfloat* c, const GLfloat* v); + typedef void(APIENTRYP + PFNGLNORMAL3FVERTEX3FSUNPROC)(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC)(const GLfloat* n, const GLfloat* v); + typedef void(APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)( + GLfloat r, + GLfloat g, + GLfloat b, + GLfloat a, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z + ); + typedef void(APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat* c, const GLfloat* n, const GLfloat* v); + typedef void(APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC)(const GLfloat* tc, const GLfloat* v); + typedef void(APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC)( + GLfloat s, + GLfloat t, + GLfloat p, + GLfloat q, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w + ); + typedef void(APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC)(const GLfloat* tc, const GLfloat* v); + typedef void(APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)( + GLfloat s, + GLfloat t, + GLubyte r, + GLubyte g, + GLubyte b, + GLubyte a, + GLfloat x, + GLfloat y, + GLfloat z + ); + typedef void(APIENTRYP + PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)(const GLfloat* tc, const GLubyte* c, const GLfloat* v); + typedef void(APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)( + GLfloat s, + GLfloat t, + GLfloat r, + GLfloat g, + GLfloat b, + GLfloat x, + GLfloat y, + GLfloat z + ); + typedef void(APIENTRYP + PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)(const GLfloat* tc, const GLfloat* c, const GLfloat* v); + typedef void(APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)( + GLfloat s, + GLfloat t, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z + ); + typedef void(APIENTRYP + PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat* tc, const GLfloat* n, const GLfloat* v); + typedef void(APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)( + GLfloat s, + GLfloat t, + GLfloat r, + GLfloat g, + GLfloat b, + GLfloat a, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z + ); + typedef void(APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)( + const GLfloat* tc, + const GLfloat* c, + const GLfloat* n, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)( + GLfloat s, + GLfloat t, + GLfloat p, + GLfloat q, + GLfloat r, + GLfloat g, + GLfloat b, + GLfloat a, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w + ); + typedef void(APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)( + const GLfloat* tc, + const GLfloat* c, + const GLfloat* n, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)(GLuint rc, GLfloat x, GLfloat y, GLfloat z); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)(const GLuint* rc, const GLfloat* v); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)( + GLuint rc, + GLubyte r, + GLubyte g, + GLubyte b, + GLubyte a, + GLfloat x, + GLfloat y, + GLfloat z + ); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)( + const GLuint* rc, + const GLubyte* c, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)( + GLuint rc, + GLfloat r, + GLfloat g, + GLfloat b, + GLfloat x, + GLfloat y, + GLfloat z + ); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)( + const GLuint* rc, + const GLfloat* c, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)( + GLuint rc, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z + ); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)( + const GLuint* rc, + const GLfloat* n, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)( + GLuint rc, + GLfloat r, + GLfloat g, + GLfloat b, + GLfloat a, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z + ); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)( + const GLuint* rc, + const GLfloat* c, + const GLfloat* n, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)( + GLuint rc, + GLfloat s, + GLfloat t, + GLfloat x, + GLfloat y, + GLfloat z + ); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)( + const GLuint* rc, + const GLfloat* tc, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)( + GLuint rc, + GLfloat s, + GLfloat t, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z + ); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)( + const GLuint* rc, + const GLfloat* tc, + const GLfloat* n, + const GLfloat* v + ); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)( + GLuint rc, + GLfloat s, + GLfloat t, + GLfloat r, + GLfloat g, + GLfloat b, + GLfloat a, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z + ); + typedef void(APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)( + const GLuint* rc, + const GLfloat* tc, + const GLfloat* c, + const GLfloat* n, + const GLfloat* v + ); +#ifdef GL_GLEXT_PROTOTYPES + GLAPI void APIENTRY glColor4ubVertex2fSUN(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); + GLAPI void APIENTRY glColor4ubVertex2fvSUN(const GLubyte* c, const GLfloat* v); + GLAPI void APIENTRY + glColor4ubVertex3fSUN(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glColor4ubVertex3fvSUN(const GLubyte* c, const GLfloat* v); + GLAPI void APIENTRY glColor3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glColor3fVertex3fvSUN(const GLfloat* c, const GLfloat* v); + GLAPI void APIENTRY glNormal3fVertex3fSUN(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glNormal3fVertex3fvSUN(const GLfloat* n, const GLfloat* v); + GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN( + GLfloat r, + GLfloat g, + GLfloat b, + GLfloat a, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z + ); + GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN(const GLfloat* c, const GLfloat* n, const GLfloat* v); + GLAPI void APIENTRY glTexCoord2fVertex3fSUN(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glTexCoord2fVertex3fvSUN(const GLfloat* tc, const GLfloat* v); + GLAPI void APIENTRY + glTexCoord4fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); + GLAPI void APIENTRY glTexCoord4fVertex4fvSUN(const GLfloat* tc, const GLfloat* v); + GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN( + GLfloat s, + GLfloat t, + GLubyte r, + GLubyte g, + GLubyte b, + GLubyte a, + GLfloat x, + GLfloat y, + GLfloat z + ); + GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN(const GLfloat* tc, const GLubyte* c, const GLfloat* v); + GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN( + GLfloat s, + GLfloat t, + GLfloat r, + GLfloat g, + GLfloat b, + GLfloat x, + GLfloat y, + GLfloat z + ); + GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN(const GLfloat* tc, const GLfloat* c, const GLfloat* v); + GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN( + GLfloat s, + GLfloat t, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z + ); + GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN(const GLfloat* tc, const GLfloat* n, const GLfloat* v); + GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN( + GLfloat s, + GLfloat t, + GLfloat r, + GLfloat g, + GLfloat b, + GLfloat a, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z + ); + GLAPI void APIENTRY + glTexCoord2fColor4fNormal3fVertex3fvSUN(const GLfloat* tc, const GLfloat* c, const GLfloat* n, const GLfloat* v); + GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN( + GLfloat s, + GLfloat t, + GLfloat p, + GLfloat q, + GLfloat r, + GLfloat g, + GLfloat b, + GLfloat a, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z, + GLfloat w + ); + GLAPI void APIENTRY + glTexCoord4fColor4fNormal3fVertex4fvSUN(const GLfloat* tc, const GLfloat* c, const GLfloat* n, const GLfloat* v); + GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN(GLuint rc, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN(const GLuint* rc, const GLfloat* v); + GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN( + GLuint rc, + GLubyte r, + GLubyte g, + GLubyte b, + GLubyte a, + GLfloat x, + GLfloat y, + GLfloat z + ); + GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN(const GLuint* rc, const GLubyte* c, const GLfloat* v); + GLAPI void APIENTRY + glReplacementCodeuiColor3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN(const GLuint* rc, const GLfloat* c, const GLfloat* v); + GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN( + GLuint rc, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z + ); + GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN(const GLuint* rc, const GLfloat* n, const GLfloat* v); + GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN( + GLuint rc, + GLfloat r, + GLfloat g, + GLfloat b, + GLfloat a, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z + ); + GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN( + const GLuint* rc, + const GLfloat* c, + const GLfloat* n, + const GLfloat* v + ); + GLAPI void APIENTRY + glReplacementCodeuiTexCoord2fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); + GLAPI void APIENTRY + glReplacementCodeuiTexCoord2fVertex3fvSUN(const GLuint* rc, const GLfloat* tc, const GLfloat* v); + GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN( + GLuint rc, + GLfloat s, + GLfloat t, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z + ); + GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN( + const GLuint* rc, + const GLfloat* tc, + const GLfloat* n, + const GLfloat* v + ); + GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN( + GLuint rc, + GLfloat s, + GLfloat t, + GLfloat r, + GLfloat g, + GLfloat b, + GLfloat a, + GLfloat nx, + GLfloat ny, + GLfloat nz, + GLfloat x, + GLfloat y, + GLfloat z + ); + GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN( + const GLuint* rc, + const GLfloat* tc, + const GLfloat* c, + const GLfloat* n, + const GLfloat* v + ); +#endif +#endif /* GL_SUN_vertex */ + +#ifndef GL_WIN_phong_shading +#define GL_WIN_phong_shading 1 +#define GL_PHONG_WIN 0x80EA +#define GL_PHONG_HINT_WIN 0x80EB +#endif /* GL_WIN_phong_shading */ + +#ifndef GL_WIN_specular_fog +#define GL_WIN_specular_fog 1 +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC +#endif /* GL_WIN_specular_fog */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/mortar/include/mortar/mortar_pixels.h b/mortar/include/mortar/mortar_pixels.h new file mode 100644 index 00000000..5db6d4ef --- /dev/null +++ b/mortar/include/mortar/mortar_pixels.h @@ -0,0 +1,91 @@ +#pragma once + +#include "mortar_begin.h" + +#include + +typedef struct MORTAR_Color { + uint8_t r; + uint8_t g; + uint8_t b; + uint8_t a; +} MORTAR_Color; + +#define MORTAR_ALPHA_OPAQUE 255 + +typedef enum MORTAR_PixelFormat { + MORTAR_PIXELFORMAT_UNKNOWN = 0, + MORTAR_PIXELFORMAT_INDEX1LSB, + MORTAR_PIXELFORMAT_INDEX1MSB, + MORTAR_PIXELFORMAT_INDEX8, + MORTAR_PIXELFORMAT_RGBA32, + MORTAR_PIXELFORMAT_RGBX32, + MORTAR_PIXELFORMAT_BGR24, + MORTAR_PIXELFORMAT_XRGB32, + MORTAR_PIXELFORMAT_ARGB32, + MORTAR_PIXELFORMAT_RGBX8888, + MORTAR_PIXELFORMAT_XBGR8888, + MORTAR_PIXELFORMAT_BGRX8888, + MORTAR_PIXELFORMAT_XRGB8888, + MORTAR_PIXELFORMAT_ARGB8888, + MORTAR_PIXELFORMAT_BGRA8888, + MORTAR_PIXELFORMAT_RGBA8888, + MORTAR_PIXELFORMAT_ABGR8888, +} MORTAR_PixelFormat; + +typedef struct MORTAR_Palette { + int ncolors; /**< number of elements in `colors`. */ + MORTAR_Color* colors; /**< an array of colors, `ncolors` long. */ +} MORTAR_Palette; + +typedef struct MORTAR_PixelFormatDetails { + MORTAR_PixelFormat format; + uint8_t bits_per_pixel; + uint32_t Rmask; + uint32_t Gmask; + uint32_t Bmask; + uint32_t Amask; + void* reserved; +} MORTAR_PixelFormatDetails; + +extern MORTAR_DECLSPEC MORTAR_Palette* MORTAR_CreatePalette(int ncolors); + +extern MORTAR_DECLSPEC void MORTAR_DestroyPalette(MORTAR_Palette* palette); + +extern MORTAR_DECLSPEC bool MORTAR_SetPaletteColors( + MORTAR_Palette* palette, + const MORTAR_Color* colors, + int firstcolor, + int ncolors +); + +extern MORTAR_DECLSPEC const MORTAR_PixelFormatDetails* MORTAR_GetPixelFormatDetails(MORTAR_PixelFormat format); + +extern MORTAR_DECLSPEC uint32_t MORTAR_MapRGBA( + const MORTAR_PixelFormatDetails* format, + const MORTAR_Palette* palette, + uint8_t r, + uint8_t g, + uint8_t b, + uint8_t a +); + +extern MORTAR_DECLSPEC uint32_t +MORTAR_MapRGB(const MORTAR_PixelFormatDetails* format, const MORTAR_Palette* palette, uint8_t r, uint8_t g, uint8_t b); + +extern MORTAR_DECLSPEC void MORTAR_GetRGBA( + uint32_t pixelvalue, + const MORTAR_PixelFormatDetails* format, + const MORTAR_Palette* palette, + uint8_t* r, + uint8_t* g, + uint8_t* b, + uint8_t* a +); + +extern MORTAR_DECLSPEC MORTAR_PixelFormat +MORTAR_GetPixelFormatForMasks(int bpp, uint32_t Rmask, uint32_t Gmask, uint32_t Bmask, uint32_t Amask); + +extern MORTAR_DECLSPEC const char* MORTAR_GetPixelFormatName(MORTAR_PixelFormat format); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_process.h b/mortar/include/mortar/mortar_process.h new file mode 100644 index 00000000..1aec8398 --- /dev/null +++ b/mortar/include/mortar/mortar_process.h @@ -0,0 +1,9 @@ +#pragma once + +#include "mortar_begin.h" + +typedef struct MORTAR_Process MORTAR_Process; + +extern MORTAR_DECLSPEC MORTAR_Process* MORTAR_CreateProcess(const char* const* args, bool pipe_stdio); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_rect.h b/mortar/include/mortar/mortar_rect.h new file mode 100644 index 00000000..1d89bd4b --- /dev/null +++ b/mortar/include/mortar/mortar_rect.h @@ -0,0 +1,27 @@ +#pragma once + +#include "mortar_begin.h" + +typedef struct MORTAR_Point { + int x; + int y; +} MORTAR_Point; + +typedef struct MORTAR_FPoint { + float x; + float y; +} MORTAR_FPoint; + +typedef struct MORTAR_Rect { + int x, y; + int w, h; +} MORTAR_Rect; + +typedef struct MORTAR_FRect { + float x; + float y; + float w; + float h; +} MORTAR_FRect; + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_render.h b/mortar/include/mortar/mortar_render.h new file mode 100644 index 00000000..a0345720 --- /dev/null +++ b/mortar/include/mortar/mortar_render.h @@ -0,0 +1,40 @@ +#pragma once + +#include "mortar/mortar_pixels.h" +#include "mortar/mortar_rect.h" +#include "mortar/mortar_video.h" +#include "mortar_begin.h" + +typedef struct MORTAR_Renderer MORTAR_Renderer; +typedef struct MORTAR_Texture MORTAR_Texture; + +extern MORTAR_DECLSPEC MORTAR_Renderer* MORTAR_CreateRenderer(MORTAR_Window* window); + +extern MORTAR_DECLSPEC void MORTAR_DestroyRenderer(MORTAR_Renderer* renderer); + +extern MORTAR_DECLSPEC MORTAR_Texture* MORTAR_CreateTexture( + MORTAR_Renderer* renderer, + MORTAR_PixelFormat format, + int w, + int h +); + +extern MORTAR_DECLSPEC void MORTAR_DestroyTexture(MORTAR_Texture* texture); + +extern MORTAR_DECLSPEC bool MORTAR_RenderTexture( + MORTAR_Renderer* renderer, + MORTAR_Texture* texture, + const MORTAR_FRect* srcrect, + const MORTAR_FRect* dstrect +); + +extern MORTAR_DECLSPEC bool MORTAR_RenderPresent(MORTAR_Renderer* renderer); + +extern MORTAR_DECLSPEC bool MORTAR_UpdateTexture( + MORTAR_Texture* texture, + const MORTAR_Rect* rect, + const void* pixels, + int pitch +); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_scancode.h b/mortar/include/mortar/mortar_scancode.h new file mode 100644 index 00000000..4f97fcdf --- /dev/null +++ b/mortar/include/mortar/mortar_scancode.h @@ -0,0 +1,380 @@ +#pragma once + +#include "mortar_begin.h" + +typedef enum MORTAR_Scancode { + MORTAR_SCANCODE_UNKNOWN = 0, + + /** + * \name Usage page 0x07 + * + * These values are from usage page 0x07 (USB keyboard page). + */ + /* @{ */ + + MORTAR_SCANCODE_A = 4, + MORTAR_SCANCODE_B = 5, + MORTAR_SCANCODE_C = 6, + MORTAR_SCANCODE_D = 7, + MORTAR_SCANCODE_E = 8, + MORTAR_SCANCODE_F = 9, + MORTAR_SCANCODE_G = 10, + MORTAR_SCANCODE_H = 11, + MORTAR_SCANCODE_I = 12, + MORTAR_SCANCODE_J = 13, + MORTAR_SCANCODE_K = 14, + MORTAR_SCANCODE_L = 15, + MORTAR_SCANCODE_M = 16, + MORTAR_SCANCODE_N = 17, + MORTAR_SCANCODE_O = 18, + MORTAR_SCANCODE_P = 19, + MORTAR_SCANCODE_Q = 20, + MORTAR_SCANCODE_R = 21, + MORTAR_SCANCODE_S = 22, + MORTAR_SCANCODE_T = 23, + MORTAR_SCANCODE_U = 24, + MORTAR_SCANCODE_V = 25, + MORTAR_SCANCODE_W = 26, + MORTAR_SCANCODE_X = 27, + MORTAR_SCANCODE_Y = 28, + MORTAR_SCANCODE_Z = 29, + + MORTAR_SCANCODE_1 = 30, + MORTAR_SCANCODE_2 = 31, + MORTAR_SCANCODE_3 = 32, + MORTAR_SCANCODE_4 = 33, + MORTAR_SCANCODE_5 = 34, + MORTAR_SCANCODE_6 = 35, + MORTAR_SCANCODE_7 = 36, + MORTAR_SCANCODE_8 = 37, + MORTAR_SCANCODE_9 = 38, + MORTAR_SCANCODE_0 = 39, + + MORTAR_SCANCODE_RETURN = 40, + MORTAR_SCANCODE_ESCAPE = 41, + MORTAR_SCANCODE_BACKSPACE = 42, + MORTAR_SCANCODE_TAB = 43, + MORTAR_SCANCODE_SPACE = 44, + + MORTAR_SCANCODE_MINUS = 45, + MORTAR_SCANCODE_EQUALS = 46, + MORTAR_SCANCODE_LEFTBRACKET = 47, + MORTAR_SCANCODE_RIGHTBRACKET = 48, + MORTAR_SCANCODE_BACKSLASH = 49, /**< Located at the lower left of the return + * key on ISO keyboards and at the right end + * of the QWERTY row on ANSI keyboards. + * Produces REVERSE SOLIDUS (backslash) and + * VERTICAL LINE in a US layout, REVERSE + * SOLIDUS and VERTICAL LINE in a UK Mac + * layout, NUMBER SIGN and TILDE in a UK + * Windows layout, DOLLAR SIGN and POUND SIGN + * in a Swiss German layout, NUMBER SIGN and + * APOSTROPHE in a German layout, GRAVE + * ACCENT and POUND SIGN in a French Mac + * layout, and ASTERISK and MICRO SIGN in a + * French Windows layout. + */ + MORTAR_SCANCODE_NONUSHASH = 50, /**< ISO USB keyboards actually use this code + * instead of 49 for the same key, but all + * OSes I've seen treat the two codes + * identically. So, as an implementor, unless + * your keyboard generates both of those + * codes and your OS treats them differently, + * you should generate MORTAR_SCANCODE_BACKSLASH + * instead of this code. As a user, you + * should not rely on this code because SDL + * will never generate it with most (all?) + * keyboards. + */ + MORTAR_SCANCODE_SEMICOLON = 51, + MORTAR_SCANCODE_APOSTROPHE = 52, + MORTAR_SCANCODE_GRAVE = 53, /**< Located in the top left corner (on both ANSI + * and ISO keyboards). Produces GRAVE ACCENT and + * TILDE in a US Windows layout and in US and UK + * Mac layouts on ANSI keyboards, GRAVE ACCENT + * and NOT SIGN in a UK Windows layout, SECTION + * SIGN and PLUS-MINUS SIGN in US and UK Mac + * layouts on ISO keyboards, SECTION SIGN and + * DEGREE SIGN in a Swiss German layout (Mac: + * only on ISO keyboards), CIRCUMFLEX ACCENT and + * DEGREE SIGN in a German layout (Mac: only on + * ISO keyboards), SUPERSCRIPT TWO and TILDE in a + * French Windows layout, COMMERCIAL AT and + * NUMBER SIGN in a French Mac layout on ISO + * keyboards, and LESS-THAN SIGN and GREATER-THAN + * SIGN in a Swiss German, German, or French Mac + * layout on ANSI keyboards. + */ + MORTAR_SCANCODE_COMMA = 54, + MORTAR_SCANCODE_PERIOD = 55, + MORTAR_SCANCODE_SLASH = 56, + + MORTAR_SCANCODE_CAPSLOCK = 57, + + MORTAR_SCANCODE_F1 = 58, + MORTAR_SCANCODE_F2 = 59, + MORTAR_SCANCODE_F3 = 60, + MORTAR_SCANCODE_F4 = 61, + MORTAR_SCANCODE_F5 = 62, + MORTAR_SCANCODE_F6 = 63, + MORTAR_SCANCODE_F7 = 64, + MORTAR_SCANCODE_F8 = 65, + MORTAR_SCANCODE_F9 = 66, + MORTAR_SCANCODE_F10 = 67, + MORTAR_SCANCODE_F11 = 68, + MORTAR_SCANCODE_F12 = 69, + + MORTAR_SCANCODE_PRINTSCREEN = 70, + MORTAR_SCANCODE_SCROLLLOCK = 71, + MORTAR_SCANCODE_PAUSE = 72, + MORTAR_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but + does send code 73, not 117) */ + MORTAR_SCANCODE_HOME = 74, + MORTAR_SCANCODE_PAGEUP = 75, + MORTAR_SCANCODE_DELETE = 76, + MORTAR_SCANCODE_END = 77, + MORTAR_SCANCODE_PAGEDOWN = 78, + MORTAR_SCANCODE_RIGHT = 79, + MORTAR_SCANCODE_LEFT = 80, + MORTAR_SCANCODE_DOWN = 81, + MORTAR_SCANCODE_UP = 82, + + MORTAR_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards + */ + MORTAR_SCANCODE_KP_DIVIDE = 84, + MORTAR_SCANCODE_KP_MULTIPLY = 85, + MORTAR_SCANCODE_KP_MINUS = 86, + MORTAR_SCANCODE_KP_PLUS = 87, + MORTAR_SCANCODE_KP_ENTER = 88, + MORTAR_SCANCODE_KP_1 = 89, + MORTAR_SCANCODE_KP_2 = 90, + MORTAR_SCANCODE_KP_3 = 91, + MORTAR_SCANCODE_KP_4 = 92, + MORTAR_SCANCODE_KP_5 = 93, + MORTAR_SCANCODE_KP_6 = 94, + MORTAR_SCANCODE_KP_7 = 95, + MORTAR_SCANCODE_KP_8 = 96, + MORTAR_SCANCODE_KP_9 = 97, + MORTAR_SCANCODE_KP_0 = 98, + MORTAR_SCANCODE_KP_PERIOD = 99, + + MORTAR_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO + * keyboards have over ANSI ones, + * located between left shift and Z. + * Produces GRAVE ACCENT and TILDE in a + * US or UK Mac layout, REVERSE SOLIDUS + * (backslash) and VERTICAL LINE in a + * US or UK Windows layout, and + * LESS-THAN SIGN and GREATER-THAN SIGN + * in a Swiss German, German, or French + * layout. */ + MORTAR_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */ + MORTAR_SCANCODE_POWER = 102, /**< The USB document says this is a status flag, + * not a physical key - but some Mac keyboards + * do have a power key. */ + MORTAR_SCANCODE_KP_EQUALS = 103, + MORTAR_SCANCODE_F13 = 104, + MORTAR_SCANCODE_F14 = 105, + MORTAR_SCANCODE_F15 = 106, + MORTAR_SCANCODE_F16 = 107, + MORTAR_SCANCODE_F17 = 108, + MORTAR_SCANCODE_F18 = 109, + MORTAR_SCANCODE_F19 = 110, + MORTAR_SCANCODE_F20 = 111, + MORTAR_SCANCODE_F21 = 112, + MORTAR_SCANCODE_F22 = 113, + MORTAR_SCANCODE_F23 = 114, + MORTAR_SCANCODE_F24 = 115, + MORTAR_SCANCODE_EXECUTE = 116, + MORTAR_SCANCODE_HELP = 117, /**< AL Integrated Help Center */ + MORTAR_SCANCODE_MENU = 118, /**< Menu (show menu) */ + MORTAR_SCANCODE_SELECT = 119, + MORTAR_SCANCODE_STOP = 120, /**< AC Stop */ + MORTAR_SCANCODE_AGAIN = 121, /**< AC Redo/Repeat */ + MORTAR_SCANCODE_UNDO = 122, /**< AC Undo */ + MORTAR_SCANCODE_CUT = 123, /**< AC Cut */ + MORTAR_SCANCODE_COPY = 124, /**< AC Copy */ + MORTAR_SCANCODE_PASTE = 125, /**< AC Paste */ + MORTAR_SCANCODE_FIND = 126, /**< AC Find */ + MORTAR_SCANCODE_MUTE = 127, + MORTAR_SCANCODE_VOLUMEUP = 128, + MORTAR_SCANCODE_VOLUMEDOWN = 129, + /* not sure whether there's a reason to enable these */ + /* MORTAR_SCANCODE_LOCKINGCAPSLOCK = 130, */ + /* MORTAR_SCANCODE_LOCKINGNUMLOCK = 131, */ + /* MORTAR_SCANCODE_LOCKINGSCROLLLOCK = 132, */ + MORTAR_SCANCODE_KP_COMMA = 133, + MORTAR_SCANCODE_KP_EQUALSAS400 = 134, + + MORTAR_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see + footnotes in USB doc */ + MORTAR_SCANCODE_INTERNATIONAL2 = 136, + MORTAR_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */ + MORTAR_SCANCODE_INTERNATIONAL4 = 138, + MORTAR_SCANCODE_INTERNATIONAL5 = 139, + MORTAR_SCANCODE_INTERNATIONAL6 = 140, + MORTAR_SCANCODE_INTERNATIONAL7 = 141, + MORTAR_SCANCODE_INTERNATIONAL8 = 142, + MORTAR_SCANCODE_INTERNATIONAL9 = 143, + MORTAR_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */ + MORTAR_SCANCODE_LANG2 = 145, /**< Hanja conversion */ + MORTAR_SCANCODE_LANG3 = 146, /**< Katakana */ + MORTAR_SCANCODE_LANG4 = 147, /**< Hiragana */ + MORTAR_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */ + MORTAR_SCANCODE_LANG6 = 149, /**< reserved */ + MORTAR_SCANCODE_LANG7 = 150, /**< reserved */ + MORTAR_SCANCODE_LANG8 = 151, /**< reserved */ + MORTAR_SCANCODE_LANG9 = 152, /**< reserved */ + + MORTAR_SCANCODE_ALTERASE = 153, /**< Erase-Eaze */ + MORTAR_SCANCODE_SYSREQ = 154, + MORTAR_SCANCODE_CANCEL = 155, /**< AC Cancel */ + MORTAR_SCANCODE_CLEAR = 156, + MORTAR_SCANCODE_PRIOR = 157, + MORTAR_SCANCODE_RETURN2 = 158, + MORTAR_SCANCODE_SEPARATOR = 159, + MORTAR_SCANCODE_OUT = 160, + MORTAR_SCANCODE_OPER = 161, + MORTAR_SCANCODE_CLEARAGAIN = 162, + MORTAR_SCANCODE_CRSEL = 163, + MORTAR_SCANCODE_EXSEL = 164, + + MORTAR_SCANCODE_KP_00 = 176, + MORTAR_SCANCODE_KP_000 = 177, + MORTAR_SCANCODE_THOUSANDSSEPARATOR = 178, + MORTAR_SCANCODE_DECIMALSEPARATOR = 179, + MORTAR_SCANCODE_CURRENCYUNIT = 180, + MORTAR_SCANCODE_CURRENCYSUBUNIT = 181, + MORTAR_SCANCODE_KP_LEFTPAREN = 182, + MORTAR_SCANCODE_KP_RIGHTPAREN = 183, + MORTAR_SCANCODE_KP_LEFTBRACE = 184, + MORTAR_SCANCODE_KP_RIGHTBRACE = 185, + MORTAR_SCANCODE_KP_TAB = 186, + MORTAR_SCANCODE_KP_BACKSPACE = 187, + MORTAR_SCANCODE_KP_A = 188, + MORTAR_SCANCODE_KP_B = 189, + MORTAR_SCANCODE_KP_C = 190, + MORTAR_SCANCODE_KP_D = 191, + MORTAR_SCANCODE_KP_E = 192, + MORTAR_SCANCODE_KP_F = 193, + MORTAR_SCANCODE_KP_XOR = 194, + MORTAR_SCANCODE_KP_POWER = 195, + MORTAR_SCANCODE_KP_PERCENT = 196, + MORTAR_SCANCODE_KP_LESS = 197, + MORTAR_SCANCODE_KP_GREATER = 198, + MORTAR_SCANCODE_KP_AMPERSAND = 199, + MORTAR_SCANCODE_KP_DBLAMPERSAND = 200, + MORTAR_SCANCODE_KP_VERTICALBAR = 201, + MORTAR_SCANCODE_KP_DBLVERTICALBAR = 202, + MORTAR_SCANCODE_KP_COLON = 203, + MORTAR_SCANCODE_KP_HASH = 204, + MORTAR_SCANCODE_KP_SPACE = 205, + MORTAR_SCANCODE_KP_AT = 206, + MORTAR_SCANCODE_KP_EXCLAM = 207, + MORTAR_SCANCODE_KP_MEMSTORE = 208, + MORTAR_SCANCODE_KP_MEMRECALL = 209, + MORTAR_SCANCODE_KP_MEMCLEAR = 210, + MORTAR_SCANCODE_KP_MEMADD = 211, + MORTAR_SCANCODE_KP_MEMSUBTRACT = 212, + MORTAR_SCANCODE_KP_MEMMULTIPLY = 213, + MORTAR_SCANCODE_KP_MEMDIVIDE = 214, + MORTAR_SCANCODE_KP_PLUSMINUS = 215, + MORTAR_SCANCODE_KP_CLEAR = 216, + MORTAR_SCANCODE_KP_CLEARENTRY = 217, + MORTAR_SCANCODE_KP_BINARY = 218, + MORTAR_SCANCODE_KP_OCTAL = 219, + MORTAR_SCANCODE_KP_DECIMAL = 220, + MORTAR_SCANCODE_KP_HEXADECIMAL = 221, + + MORTAR_SCANCODE_LCTRL = 224, + MORTAR_SCANCODE_LSHIFT = 225, + MORTAR_SCANCODE_LALT = 226, /**< alt, option */ + MORTAR_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */ + MORTAR_SCANCODE_RCTRL = 228, + MORTAR_SCANCODE_RSHIFT = 229, + MORTAR_SCANCODE_RALT = 230, /**< alt gr, option */ + MORTAR_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */ + + MORTAR_SCANCODE_MODE = 257, /**< I'm not sure if this is really not covered + * by any of the above, but since there's a + * special MORTAR_KMOD_MODE for it I'm adding it here + */ + + /* @} */ /* Usage page 0x07 */ + + /** + * \name Usage page 0x0C + * + * These values are mapped from usage page 0x0C (USB consumer page). + * + * There are way more keys in the spec than we can represent in the + * current scancode range, so pick the ones that commonly come up in + * real world usage. + */ + /* @{ */ + + MORTAR_SCANCODE_SLEEP = 258, /**< Sleep */ + MORTAR_SCANCODE_WAKE = 259, /**< Wake */ + + MORTAR_SCANCODE_CHANNEL_INCREMENT = 260, /**< Channel Increment */ + MORTAR_SCANCODE_CHANNEL_DECREMENT = 261, /**< Channel Decrement */ + + MORTAR_SCANCODE_MEDIA_PLAY = 262, /**< Play */ + MORTAR_SCANCODE_MEDIA_PAUSE = 263, /**< Pause */ + MORTAR_SCANCODE_MEDIA_RECORD = 264, /**< Record */ + MORTAR_SCANCODE_MEDIA_FAST_FORWARD = 265, /**< Fast Forward */ + MORTAR_SCANCODE_MEDIA_REWIND = 266, /**< Rewind */ + MORTAR_SCANCODE_MEDIA_NEXT_TRACK = 267, /**< Next Track */ + MORTAR_SCANCODE_MEDIA_PREVIOUS_TRACK = 268, /**< Previous Track */ + MORTAR_SCANCODE_MEDIA_STOP = 269, /**< Stop */ + MORTAR_SCANCODE_MEDIA_EJECT = 270, /**< Eject */ + MORTAR_SCANCODE_MEDIA_PLAY_PAUSE = 271, /**< Play / Pause */ + MORTAR_SCANCODE_MEDIA_SELECT = 272, /* Media Select */ + + MORTAR_SCANCODE_AC_NEW = 273, /**< AC New */ + MORTAR_SCANCODE_AC_OPEN = 274, /**< AC Open */ + MORTAR_SCANCODE_AC_CLOSE = 275, /**< AC Close */ + MORTAR_SCANCODE_AC_EXIT = 276, /**< AC Exit */ + MORTAR_SCANCODE_AC_SAVE = 277, /**< AC Save */ + MORTAR_SCANCODE_AC_PRINT = 278, /**< AC Print */ + MORTAR_SCANCODE_AC_PROPERTIES = 279, /**< AC Properties */ + + MORTAR_SCANCODE_AC_SEARCH = 280, /**< AC Search */ + MORTAR_SCANCODE_AC_HOME = 281, /**< AC Home */ + MORTAR_SCANCODE_AC_BACK = 282, /**< AC Back */ + MORTAR_SCANCODE_AC_FORWARD = 283, /**< AC Forward */ + MORTAR_SCANCODE_AC_STOP = 284, /**< AC Stop */ + MORTAR_SCANCODE_AC_REFRESH = 285, /**< AC Refresh */ + MORTAR_SCANCODE_AC_BOOKMARKS = 286, /**< AC Bookmarks */ + + /* @} */ /* Usage page 0x0C */ + + /** + * \name Mobile keys + * + * These are values that are often used on mobile phones. + */ + /* @{ */ + + MORTAR_SCANCODE_SOFTLEFT = 287, /**< Usually situated below the display on phones and + used as a multi-function feature key for selecting + a software defined function shown on the bottom left + of the display. */ + MORTAR_SCANCODE_SOFTRIGHT = 288, /**< Usually situated below the display on phones and + used as a multi-function feature key for selecting + a software defined function shown on the bottom right + of the display. */ + MORTAR_SCANCODE_CALL = 289, /**< Used for accepting phone calls. */ + MORTAR_SCANCODE_ENDCALL = 290, /**< Used for rejecting phone calls. */ + + /* @} */ /* Mobile keys */ + + /* Add any other keys here. */ + + MORTAR_SCANCODE_RESERVED = 400, /**< 400-500 reserved for dynamic keycodes */ + + MORTAR_SCANCODE_COUNT = 512 /**< not a key, just marks the number of scancodes for array bounds */ + +} MORTAR_Scancode; + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_stdinc.h b/mortar/include/mortar/mortar_stdinc.h new file mode 100644 index 00000000..497d73c3 --- /dev/null +++ b/mortar/include/mortar/mortar_stdinc.h @@ -0,0 +1,92 @@ +#pragma once + +#include "mortar_begin.h" + +#include +#include + +#define MORTAR_ENUM_FLAG_OPERATORS(ENUMTYPE) \ + inline ENUMTYPE operator|(ENUMTYPE a, ENUMTYPE b) \ + { \ + return ENUMTYPE(((int) a) | ((int) b)); \ + } \ + inline ENUMTYPE& operator|=(ENUMTYPE& a, ENUMTYPE b) \ + { \ + return (ENUMTYPE&) (((int&) a) |= ((int) b)); \ + } \ + inline ENUMTYPE operator&(ENUMTYPE a, ENUMTYPE b) \ + { \ + return ENUMTYPE(((int) a) & ((int) b)); \ + } \ + inline ENUMTYPE& operator&=(ENUMTYPE& a, ENUMTYPE b) \ + { \ + return (ENUMTYPE&) (((int&) a) &= ((int) b)); \ + } \ + inline ENUMTYPE operator~(ENUMTYPE a) \ + { \ + return ENUMTYPE(~((int) a)); \ + } \ + inline ENUMTYPE operator^(ENUMTYPE a, ENUMTYPE b) \ + { \ + return ENUMTYPE(((int) a) ^ ((int) b)); \ + } \ + inline ENUMTYPE& operator^=(ENUMTYPE& a, ENUMTYPE b) \ + { \ + return (ENUMTYPE&) (((int&) a) ^= ((int) b)); \ + } + +#define MORTAR_zero(x) MORTAR_memset(&(x), 0, sizeof((x))) + +#define MORTAR_clamp(x, a, b) (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x))) + +#define MORTAR_max(x, y) (((x) > (y)) ? (x) : (y)) + +typedef void (*MORTAR_FunctionPointer)(void); + +typedef struct MORTAR_GLContextState* MORTAR_GLContext; + +extern MORTAR_DECLSPEC void* MORTAR_malloc(size_t size); + +extern MORTAR_DECLSPEC void MORTAR_free(void* ptr); + +extern MORTAR_DECLSPEC char* MORTAR_itoa(int value, char* str, int radix); + +extern MORTAR_DECLSPEC void* MORTAR_memset(void* dst, int c, size_t len); + +extern MORTAR_DECLSPEC int MORTAR_memcmp(const void* s1, const void* s2, size_t len); + +extern MORTAR_DECLSPEC int MORTAR_strcasecmp(const char* str1, const char* str2); + +extern MORTAR_DECLSPEC int MORTAR_strncasecmp(const char* str1, const char* str2, size_t maxlen); + +extern MORTAR_DECLSPEC size_t MORTAR_strlen(const char* str); + +extern MORTAR_DECLSPEC char* MORTAR_strdup(const char* s); + +size_t MORTAR_DECLSPEC MORTAR_strlcpy(char* dst, const char* src, size_t maxlen); + +extern MORTAR_DECLSPEC char* MORTAR_strlwr(char* str); + +extern MORTAR_DECLSPEC char* MORTAR_strupr(char* str); + +extern MORTAR_DECLSPEC int MORTAR_strncmp(const char* str1, const char* str2, size_t maxlen); + +extern MORTAR_DECLSPEC const char* MORTAR_strstr(const char* haystack, const char* needle); + +extern MORTAR_DECLSPEC char* MORTAR_strtok_r(char* str, const char* delim, char** saveptr); + +extern MORTAR_DECLSPEC char* MORTAR_strchr(const char* str, int c); + +extern MORTAR_DECLSPEC int MORTAR_sscanf(const char* text, const char* fmt, ...); + +extern MORTAR_DECLSPEC int MORTAR_snprintf(char* text, size_t maxlen, const char* fmt, ...); + +extern MORTAR_DECLSPEC int MORTAR_tolower(int x); + +extern MORTAR_DECLSPEC int MORTAR_isdigit(int x); + +extern MORTAR_DECLSPEC int32_t MORTAR_rand(int32_t n); + +extern MORTAR_DECLSPEC float MORTAR_randf(void); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_surface.h b/mortar/include/mortar/mortar_surface.h new file mode 100644 index 00000000..42a3c059 --- /dev/null +++ b/mortar/include/mortar/mortar_surface.h @@ -0,0 +1,82 @@ +#pragma once + +#include "mortar/mortar_iostream.h" +#include "mortar/mortar_pixels.h" +#include "mortar/mortar_rect.h" +#include "mortar_begin.h" + +typedef struct MORTAR_Surface { + // SDL_SurfaceFlags flags; /**< The flags of the surface, read-only */ + MORTAR_PixelFormat format; + int w; + int h; + int pitch; /**< The distance in bytes between rows of pixels, read-only */ + void* pixels; /**< A pointer to the pixels of the surface, the pixels are writeable if non-NULL */ + + // int refcount; /**< Application reference count, used when freeing surface */ + // + // void *reserved; /**< Reserved for internal use */ +} MORTAR_Surface; + +typedef enum MORTAR_ScaleMode { + MORTAR_SCALEMODE_NEAREST, + MORTAR_SCALEMODE_LINEAR, + MORTAR_SCALEMODE_PIXELART, +} MORTAR_ScaleMode; + +typedef enum MORTAR_SurfaceProperty { + MORTAR_SURFACE_PROPERTY_SDL3SURFACE, +} MORTAR_SurfaceProperty; + +extern MORTAR_DECLSPEC MORTAR_Surface* MORTAR_CreateSurface(int width, int height, MORTAR_PixelFormat format); + +extern MORTAR_DECLSPEC MORTAR_Surface* MORTAR_CreateSurfaceFrom( + int width, + int height, + MORTAR_PixelFormat format, + void* pixels, + int pitch +); + +extern MORTAR_DECLSPEC void MORTAR_DestroySurface(MORTAR_Surface* surface); + +extern MORTAR_DECLSPEC bool MORTAR_LockSurface(MORTAR_Surface* surface); + +extern MORTAR_DECLSPEC void MORTAR_UnlockSurface(MORTAR_Surface* surface); + +extern MORTAR_DECLSPEC bool MORTAR_FillSurfaceRect(MORTAR_Surface* dst, const MORTAR_Rect* rect, uint32_t color); + +extern MORTAR_DECLSPEC bool MORTAR_BlitSurface( + MORTAR_Surface* src, + const MORTAR_Rect* srcrect, + MORTAR_Surface* dst, + const MORTAR_Rect* dstrect +); + +extern MORTAR_DECLSPEC bool MORTAR_SetSurfacePalette(MORTAR_Surface* surface, MORTAR_Palette* palette); + +extern MORTAR_DECLSPEC MORTAR_Palette* MORTAR_GetSurfacePalette(MORTAR_Surface* surface); + +extern MORTAR_DECLSPEC MORTAR_Surface* MORTAR_ConvertSurface(MORTAR_Surface* surface, MORTAR_PixelFormat format); + +extern MORTAR_DECLSPEC bool MORTAR_BlitSurfaceScaled( + MORTAR_Surface* src, + const MORTAR_Rect* srcrect, + MORTAR_Surface* dst, + const MORTAR_Rect* dstrect, + MORTAR_ScaleMode scaleMode +); + +extern MORTAR_DECLSPEC bool MORTAR_SetSurfaceColorKey(MORTAR_Surface* surface, bool enabled, uint32_t key); + +extern MORTAR_DECLSPEC MORTAR_Surface* MORTAR_LoadBMP(const char* file); + +extern MORTAR_DECLSPEC MORTAR_Surface* MORTAR_LoadBMP_IO(MORTAR_IOStream* src, bool closeio); + +extern MORTAR_DECLSPEC void* MORTAR_EXT_GetSurfaceProperty( + MORTAR_Surface* mortar_surface, + MORTAR_SurfaceProperty key, + void* default_value +); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_system.h b/mortar/include/mortar/mortar_system.h new file mode 100644 index 00000000..d910fe89 --- /dev/null +++ b/mortar/include/mortar/mortar_system.h @@ -0,0 +1,7 @@ +#pragma once + +#include "mortar_begin.h" + +extern MORTAR_DECLSPEC const char* MORTAR_GetAndroidExternalStoragePath(void); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_thread.h b/mortar/include/mortar/mortar_thread.h new file mode 100644 index 00000000..1b5c5776 --- /dev/null +++ b/mortar/include/mortar/mortar_thread.h @@ -0,0 +1,15 @@ +#pragma once + +#include "mortar_begin.h" + +#include + +typedef struct MORTAR_Thread MORTAR_Thread; + +typedef int (*MORTAR_ThreadFunction)(void* data); + +extern MORTAR_DECLSPEC void MORTAR_WaitThread(MORTAR_Thread* thread, int* status); + +extern MORTAR_DECLSPEC MORTAR_Thread* MORTAR_CreateThread(MORTAR_ThreadFunction fn, void* data, uint32_t stacksize); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_timer.h b/mortar/include/mortar/mortar_timer.h new file mode 100644 index 00000000..ee0f55bb --- /dev/null +++ b/mortar/include/mortar/mortar_timer.h @@ -0,0 +1,29 @@ +#pragma once + +#include "mortar_begin.h" + +#include + +typedef uint32_t MORTAR_TimerID; + +typedef uint32_t (*MORTAR_TimerCallback)(void* userdata, MORTAR_TimerID timerID, uint32_t interval); + +#define MORTAR_NS_PER_MS 1000000 + +#define MORTAR_NS_TO_MS(NS) ((NS) / MORTAR_NS_PER_MS) + +extern MORTAR_DECLSPEC void MORTAR_Delay(uint32_t ms); + +extern MORTAR_DECLSPEC uint64_t MORTAR_GetTicks(void); + +extern MORTAR_DECLSPEC uint64_t MORTAR_GetTicksNS(void); + +extern MORTAR_DECLSPEC uint64_t MORTAR_GetPerformanceFrequency(void); + +extern MORTAR_DECLSPEC uint64_t MORTAR_GetPerformanceCounter(void); + +extern MORTAR_DECLSPEC MORTAR_TimerID MORTAR_AddTimer(uint32_t interval, MORTAR_TimerCallback callback, void* userdata); + +extern MORTAR_DECLSPEC bool MORTAR_RemoveTimer(MORTAR_TimerID id); + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_touch.h b/mortar/include/mortar/mortar_touch.h new file mode 100644 index 00000000..74e481cf --- /dev/null +++ b/mortar/include/mortar/mortar_touch.h @@ -0,0 +1,11 @@ +#pragma once + +#include "mortar_begin.h" + +#include + +typedef uint64_t MORTAR_TouchID; + +typedef uint64_t MORTAR_FingerID; + +#include "mortar_end.h" diff --git a/mortar/include/mortar/mortar_video.h b/mortar/include/mortar/mortar_video.h new file mode 100644 index 00000000..fb0ea378 --- /dev/null +++ b/mortar/include/mortar/mortar_video.h @@ -0,0 +1,156 @@ +#pragma once + +#include "mortar/mortar_pixels.h" +#include "mortar/mortar_stdinc.h" +#include "mortar/mortar_surface.h" +#include "mortar_begin.h" + +typedef struct MORTAR_Window MORTAR_Window; + +typedef uint32_t MORTAR_DisplayID; + +typedef enum { + MORTAR_WINDOW_FULLSCREEN = 0x00000001, + MORTAR_WINDOW_BORDERLESS = 0x00000002, + MORTAR_WINDOW_RESIZABLE = 0x00000004 +} MORTAR_WindowFlags; + +typedef struct MORTAR_DisplayMode { + MORTAR_PixelFormat format; + int w; + int h; + float refresh_rate; +} MORTAR_DisplayMode; + +typedef enum MORTAR_WindowProperty { + MORTAR_WINDOW_PROPERTY_USER, + MORTAR_WINDOW_PROPERTY_SDL3WINDOW, + MORTAR_WINDOW_PROPERTY_HWND, +} MORTAR_WindowProperty; + +#define MORTAR_GL_CONTEXT_PROFILE_CORE 0x0001 +#define MORTAR_GL_CONTEXT_PROFILE_COMPATIBILITY 0x0002 +#define MORTAR_GL_CONTEXT_PROFILE_ES 0x0004 + +typedef enum MORTAR_GLAttr { + // MORTAR_GL_RED_SIZE, + // MORTAR_GL_GREEN_SIZE, + // MORTAR_GL_BLUE_SIZE, + // MORTAR_GL_ALPHA_SIZE, + // MORTAR_GL_BUFFER_SIZE, + MORTAR_GL_DOUBLEBUFFER, + MORTAR_GL_DEPTH_SIZE, + // MORTAR_GL_STENCIL_SIZE, + // MORTAR_GL_ACCUM_RED_SIZE, + // MORTAR_GL_ACCUM_GREEN_SIZE, + // MORTAR_GL_ACCUM_BLUE_SIZE, + // MORTAR_GL_ACCUM_ALPHA_SIZE, + // MORTAR_GL_STEREO, + MORTAR_GL_MULTISAMPLEBUFFERS, + MORTAR_GL_MULTISAMPLESAMPLES, + // MORTAR_GL_ACCELERATED_VISUAL, + // MORTAR_GL_RETAINED_BACKING, + MORTAR_GL_CONTEXT_MAJOR_VERSION, + MORTAR_GL_CONTEXT_MINOR_VERSION, + // MORTAR_GL_CONTEXT_FLAGS, + MORTAR_GL_CONTEXT_PROFILE_MASK, + // MORTAR_GL_SHARE_WITH_CURRENT_CONTEXT, + // MORTAR_GL_FRAMEBUFFER_SRGB_CAPABLE, + // MORTAR_GL_CONTEXT_RELEASE_BEHAVIOR, + // MORTAR_GL_CONTEXT_RESET_NOTIFICATION, + // MORTAR_GL_CONTEXT_NO_ERROR, + // MORTAR_GL_FLOATBUFFERS, + // MORTAR_GL_EGL_PLATFORM +} MORTAR_GLAttr; + +typedef struct MORTAR_EX_CreateWindowProps { + int width; + int height; + bool fullscreen; + const char* title; + bool hidden; + struct { + bool enabled; + bool doublebuffer; + int depth_size; + } opengl; +} MORTAR_EX_CreateWindowProps; + +extern MORTAR_DECLSPEC const char* MORTAR_GetCurrentVideoDriver(void); + +extern MORTAR_DECLSPEC bool MORTAR_RaiseWindow(MORTAR_Window* window); + +extern MORTAR_DECLSPEC bool MORTAR_SetWindowSize(MORTAR_Window* window, int w, int h); + +extern MORTAR_DECLSPEC bool MORTAR_SetWindowPosition(MORTAR_Window* window, int x, int y); + +extern MORTAR_DECLSPEC MORTAR_WindowFlags MORTAR_GetWindowFlags(MORTAR_Window* window); + +extern MORTAR_DECLSPEC bool MORTAR_SetWindowBordered(MORTAR_Window* window, bool bordered); + +extern MORTAR_DECLSPEC bool MORTAR_SetWindowResizable(MORTAR_Window* window, bool resizable); + +extern MORTAR_DECLSPEC bool MORTAR_GetWindowSize(MORTAR_Window* window, int* w, int* h); + +extern MORTAR_DECLSPEC bool MORTAR_GetWindowSizeInPixels(MORTAR_Window* window, int* w, int* h); + +extern MORTAR_DECLSPEC MORTAR_DisplayID MORTAR_GetPrimaryDisplay(void); + +extern MORTAR_DECLSPEC MORTAR_DisplayMode** MORTAR_GetFullscreenDisplayModes(MORTAR_DisplayID displayID, int* count); + +extern MORTAR_DECLSPEC const MORTAR_DisplayMode* MORTAR_GetCurrentDisplayMode(MORTAR_DisplayID displayID); + +extern MORTAR_DECLSPEC bool MORTAR_SetWindowFullscreenMode(MORTAR_Window* window, const MORTAR_DisplayMode* mode); + +extern MORTAR_DECLSPEC bool MORTAR_SetWindowFullscreen(MORTAR_Window* window, bool fullscreen); + +extern MORTAR_DECLSPEC bool MORTAR_GL_ExtensionSupported(const char* extension); + +extern MORTAR_DECLSPEC MORTAR_FunctionPointer MORTAR_GL_GetProcAddress(const char* proc); + +extern MORTAR_DECLSPEC void MORTAR_GL_ResetAttributes(void); + +extern MORTAR_DECLSPEC bool MORTAR_GL_SetAttribute(MORTAR_GLAttr attr, int value); + +extern MORTAR_DECLSPEC bool MORTAR_GL_MakeCurrent(MORTAR_Window* window, MORTAR_GLContext context); + +extern MORTAR_DECLSPEC MORTAR_GLContext MORTAR_GL_CreateContext(MORTAR_Window* window); + +extern MORTAR_DECLSPEC bool MORTAR_GL_DestroyContext(MORTAR_GLContext context); + +extern MORTAR_DECLSPEC bool MORTAR_GL_SwapWindow(MORTAR_Window* window); + +extern MORTAR_DECLSPEC bool MORTAR_SetWindowTitle(MORTAR_Window* window, const char* title); + +extern MORTAR_DECLSPEC bool MORTAR_SetWindowIcon(MORTAR_Window* window, MORTAR_Surface* icon); + +extern MORTAR_DECLSPEC bool MORTAR_GetClosestFullscreenDisplayMode( + MORTAR_DisplayID displayID, + int w, + int h, + float refresh_rate, + bool include_high_density_modes, + MORTAR_DisplayMode* closest +); + +extern MORTAR_DECLSPEC MORTAR_DisplayID MORTAR_GetDisplayForWindow(MORTAR_Window* window); + +extern MORTAR_DECLSPEC MORTAR_Window* MORTAR_EX_CreateWindow(MORTAR_EX_CreateWindowProps* createProps); + +extern MORTAR_DECLSPEC void MORTAR_DestroyWindow(MORTAR_Window* window); + +extern MORTAR_DECLSPEC bool MORTAR_EXT_SetWindowProperty( + MORTAR_Window* window, + MORTAR_WindowProperty property, + void* value +); + +extern MORTAR_DECLSPEC void* MORTAR_EXT_GetWindowProperty( + MORTAR_Window* window, + MORTAR_WindowProperty property, + void* default_value +); + +#include "mortar_end.h" + +MORTAR_ENUM_FLAG_OPERATORS(MORTAR_WindowFlags) diff --git a/mortar/src/mortar.cpp b/mortar/src/mortar.cpp new file mode 100644 index 00000000..30f8dc54 --- /dev/null +++ b/mortar/src/mortar.cpp @@ -0,0 +1,100 @@ +#include "mortar/mortar.h" + +#include "mortar/mortar_main.h" +#include "sdl3/sdl3_public.h" + +#include +#include +#include + +static MORTAR_Backend mortar_backend = MORTAR_BACKEND_ANY; + +// Define the default mortar backend here. +#define DEFAULT_MORTAR_BACKEND MORTAR_BACKEND_SDL3 + +MORTAR_Backend MORTAR_GetBackend() +{ + return mortar_backend; +} + +bool MORTAR_SetBackend(MORTAR_Backend backend) +{ + if (mortar_backend != MORTAR_BACKEND_ANY && mortar_backend != backend) { + return false; + } + mortar_backend = backend; + return true; +} + +bool MORTAR_ParseBackendName(const char* name, MORTAR_Backend* backend) +{ + if (strcmp(name, "sdl3") == 0 || strcmp(name, "SDL3") == 0) { + *backend = MORTAR_BACKEND_SDL3; + return true; + } + return false; +} + +static bool parse_mortar_arguments(int argc, char* argv[]) +{ + for (int i = 1; i < argc;) { + int consumed = 1; + if (strcmp(argv[i], "--platform") == 0) { + if (i + 1 >= argc || argv[i + 1][0] == '-') { + fprintf(stderr, "--platform requires an argument\n"); + return false; + } + if (mortar_backend != MORTAR_BACKEND_ANY) { + fprintf(stderr, "--platform can only be used once\n"); + return false; + } + if (MORTAR_ParseBackendName(argv[i + 1], &mortar_backend)) { + consumed = 2; + } + else { + fprintf(stderr, "Invalid mortar platform: %s\n", argv[i + 1]); + return false; + } + } + i += consumed; + } + return true; +} + +bool MORTAR_InitializeBackend(void) +{ + if (mortar_backend == MORTAR_BACKEND_ANY) { + mortar_backend = MORTAR_BACKEND_SDL3; + } + switch (mortar_backend) { + case MORTAR_BACKEND_SDL3: + return MORTAR_SDL3_Initialize(); + default: + fprintf(stderr, "** INTERNAL ERROR: Unknown platform **\n"); + return false; + } +} + +int MORTAR_main( + int argc, + char* argv[], + MORTAR_AppInit_cbfn* init, + MORTAR_AppIterate_cbfn* iterate, + MORTAR_AppEvent_cbfn* event, + MORTAR_AppQuit_cbfn* quit +) +{ + if (!parse_mortar_arguments(argc, argv)) { + return 1; + } + if (!MORTAR_InitializeBackend()) { + return 1; + } + switch (mortar_backend) { + case MORTAR_BACKEND_SDL3: + return MORTAR_SDL3_main(argc, argv, init, iterate, event, quit); + default: + fprintf(stderr, "** INTERNAL ERROR: Unknown platform **\n"); + return 1; + } +} diff --git a/mortar/src/sdl3/sdl3_audio.cpp b/mortar/src/sdl3/sdl3_audio.cpp new file mode 100644 index 00000000..64c5d320 --- /dev/null +++ b/mortar/src/sdl3/sdl3_audio.cpp @@ -0,0 +1,47 @@ +#include "mortar/mortar_audio.h" +#include "sdl3_internal.h" + +#include + +static SDL_AudioFormat audioformat_mortar_to_sdl3(MORTAR_AudioFormat format) +{ + switch (format) { + case MORTAR_AUDIO_F32: + return SDL_AUDIO_F32; + default: + abort(); + } +} + +MORTAR_AudioStream* MORTAR_EX_OpenAudioPlaybackDevice( + const MORTAR_AudioSpec* spec, + MORTAR_AudioStreamCallback callback, + void* userdata +) +{ + SDL_AudioSpec sdl3_spec; + sdl3_spec.format = audioformat_mortar_to_sdl3(spec->format); + sdl3_spec.channels = spec->channels; + sdl3_spec.freq = spec->freq; + return (MORTAR_AudioStream*) SDL_OpenAudioDeviceStream( + SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, + &sdl3_spec, + (SDL_AudioStreamCallback) callback, + userdata + ); +} + +void MORTAR_DestroyAudioStream(MORTAR_AudioStream* stream) +{ + SDL_DestroyAudioStream((SDL_AudioStream*) stream); +} + +bool MORTAR_EX_ResumeAudioDevice(MORTAR_AudioStream* stream) +{ + return SDL_ResumeAudioDevice(SDL_GetAudioStreamDevice((SDL_AudioStream*) stream)); +} + +bool MORTAR_PutAudioStreamData(MORTAR_AudioStream* stream, const void* buf, int len) +{ + return SDL_PutAudioStreamData((SDL_AudioStream*) stream, buf, len); +} diff --git a/mortar/src/sdl3/sdl3_cpuinfo.cpp b/mortar/src/sdl3/sdl3_cpuinfo.cpp new file mode 100644 index 00000000..7713c69e --- /dev/null +++ b/mortar/src/sdl3/sdl3_cpuinfo.cpp @@ -0,0 +1,22 @@ +#include "mortar/mortar_cpuinfo.h" +#include "sdl3_internal.h" + +bool MORTAR_HasMMX() +{ + return SDL_HasMMX(); +} + +bool MORTAR_HasSSE2() +{ + return SDL_HasSSE2(); +} + +bool MORTAR_HasNEON() +{ + return SDL_HasNEON(); +} + +int MORTAR_GetSystemRAM() +{ + return SDL_GetSystemRAM(); +} diff --git a/mortar/src/sdl3/sdl3_error.cpp b/mortar/src/sdl3/sdl3_error.cpp new file mode 100644 index 00000000..9a9621e3 --- /dev/null +++ b/mortar/src/sdl3/sdl3_error.cpp @@ -0,0 +1,7 @@ +#include "mortar/mortar_error.h" +#include "sdl3_internal.h" + +const char* MORTAR_GetError() +{ + return SDL_GetError(); +} diff --git a/mortar/src/sdl3/sdl3_events.cpp b/mortar/src/sdl3/sdl3_events.cpp new file mode 100644 index 00000000..b014f5b7 --- /dev/null +++ b/mortar/src/sdl3/sdl3_events.cpp @@ -0,0 +1,379 @@ +#include "mortar/mortar_events.h" +#include "sdl3_internal.h" + +#include + +typedef enum { + MORTAR_EVENT_CATEGORY_QUIT, + MORTAR_EVENT_CATEGORY_SYSTEM, + MORTAR_EVENT_CATEGORY_WINDOW, + MORTAR_EVENT_CATEGORY_KEYBOARD, + MORTAR_EVENT_CATEGORY_KEY, + MORTAR_EVENT_CATEGORY_MOUSE_MOTION, + MORTAR_EVENT_CATEGORY_MOUSE_BUTTON, + MORTAR_EVENT_CATEGORY_MOUSE_DEVICE, + MORTAR_EVENT_CATEGORY_GAMEPAD_AXIS, + MORTAR_EVENT_CATEGORY_GAMEPAD_BUTTON, + MORTAR_EVENT_CATEGORY_GAMEPAD_DEVICE, + MORTAR_EVENT_CATEGORY_FINGER, + MORTAR_EVENT_CATEGORY_USER, +} MORTAR_EventCategory; + +static int eventtype_mortar_to_mortarcategory(int event) +{ + switch (event) { + case MORTAR_EVENT_QUIT: + return MORTAR_EVENT_CATEGORY_QUIT; + case SDL_EVENT_TERMINATING: + return MORTAR_EVENT_CATEGORY_SYSTEM; + case MORTAR_EVENT_WINDOW_PIXEL_SIZE_CHANGED: + case MORTAR_EVENT_WINDOW_FOCUS_GAINED: + case MORTAR_EVENT_WINDOW_FOCUS_LOST: + case MORTAR_EVENT_WINDOW_CLOSE_REQUESTED: + return MORTAR_EVENT_CATEGORY_WINDOW; + case MORTAR_EVENT_KEYBOARD_ADDED: + case MORTAR_EVENT_KEYBOARD_REMOVED: + return MORTAR_EVENT_CATEGORY_KEYBOARD; + case MORTAR_EVENT_KEY_DOWN: + case MORTAR_EVENT_KEY_UP: + return MORTAR_EVENT_CATEGORY_KEY; + case MORTAR_EVENT_MOUSE_MOTION: + return MORTAR_EVENT_CATEGORY_MOUSE_MOTION; + case MORTAR_EVENT_MOUSE_BUTTON_DOWN: + case MORTAR_EVENT_MOUSE_BUTTON_UP: + return MORTAR_EVENT_CATEGORY_MOUSE_BUTTON; + case MORTAR_EVENT_MOUSE_ADDED: + case MORTAR_EVENT_MOUSE_REMOVED: + return MORTAR_EVENT_CATEGORY_MOUSE_DEVICE; + case MORTAR_EVENT_GAMEPAD_AXIS_MOTION: + return MORTAR_EVENT_CATEGORY_GAMEPAD_AXIS; + case MORTAR_EVENT_GAMEPAD_BUTTON_DOWN: + case MORTAR_EVENT_GAMEPAD_BUTTON_UP: + return MORTAR_EVENT_CATEGORY_GAMEPAD_BUTTON; + case MORTAR_EVENT_GAMEPAD_ADDED: + case MORTAR_EVENT_GAMEPAD_REMOVED: + return MORTAR_EVENT_CATEGORY_GAMEPAD_DEVICE; + case MORTAR_EVENT_FINGER_DOWN: + case MORTAR_EVENT_FINGER_UP: + case MORTAR_EVENT_FINGER_MOTION: + case MORTAR_EVENT_FINGER_CANCELED: + return MORTAR_EVENT_CATEGORY_FINGER; + default: + if (event >= MORTAR_EVENT_USER) { + return MORTAR_EVENT_CATEGORY_USER; + } + abort(); + } +} + +static int eventtype_mortar_to_sdl3(MORTAR_EventType eventtype) +{ + switch (eventtype) { + case MORTAR_EVENT_QUIT: + return SDL_EVENT_QUIT; + case MORTAR_EVENT_TERMINATING: + return SDL_EVENT_TERMINATING; + case MORTAR_EVENT_WINDOW_PIXEL_SIZE_CHANGED: + return SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED; + case MORTAR_EVENT_WINDOW_FOCUS_GAINED: + return SDL_EVENT_WINDOW_FOCUS_GAINED; + case MORTAR_EVENT_WINDOW_FOCUS_LOST: + return SDL_EVENT_WINDOW_FOCUS_LOST; + case MORTAR_EVENT_WINDOW_CLOSE_REQUESTED: + return SDL_EVENT_WINDOW_CLOSE_REQUESTED; + case MORTAR_EVENT_KEY_DOWN: + return SDL_EVENT_KEY_DOWN; + case MORTAR_EVENT_KEY_UP: + return SDL_EVENT_KEY_UP; + case MORTAR_EVENT_KEYBOARD_ADDED: + return SDL_EVENT_KEYBOARD_ADDED; + case MORTAR_EVENT_KEYBOARD_REMOVED: + return SDL_EVENT_KEYBOARD_REMOVED; + case MORTAR_EVENT_MOUSE_MOTION: + return SDL_EVENT_MOUSE_MOTION; + case MORTAR_EVENT_MOUSE_BUTTON_DOWN: + return SDL_EVENT_MOUSE_BUTTON_DOWN; + case MORTAR_EVENT_MOUSE_BUTTON_UP: + return SDL_EVENT_MOUSE_BUTTON_UP; + case MORTAR_EVENT_MOUSE_ADDED: + return SDL_EVENT_MOUSE_ADDED; + case MORTAR_EVENT_MOUSE_REMOVED: + return SDL_EVENT_MOUSE_REMOVED; + case MORTAR_EVENT_GAMEPAD_AXIS_MOTION: + return SDL_EVENT_GAMEPAD_AXIS_MOTION; + case MORTAR_EVENT_GAMEPAD_BUTTON_DOWN: + return SDL_EVENT_GAMEPAD_BUTTON_DOWN; + case MORTAR_EVENT_GAMEPAD_BUTTON_UP: + return SDL_EVENT_GAMEPAD_BUTTON_UP; + case MORTAR_EVENT_GAMEPAD_ADDED: + return SDL_EVENT_GAMEPAD_ADDED; + case MORTAR_EVENT_GAMEPAD_REMOVED: + return SDL_EVENT_GAMEPAD_REMOVED; + case MORTAR_EVENT_FINGER_DOWN: + return SDL_EVENT_FINGER_DOWN; + case MORTAR_EVENT_FINGER_UP: + return SDL_EVENT_FINGER_UP; + case MORTAR_EVENT_FINGER_MOTION: + return SDL_EVENT_FINGER_MOTION; + case MORTAR_EVENT_FINGER_CANCELED: + return SDL_EVENT_FINGER_CANCELED; + default: + if (eventtype >= MORTAR_EVENT_USER) { + return (SDL_EventType) eventtype; + } + // abort(); + return -1; + } +} + +bool eventtype_sdl3_to_mortar(int eventtype, MORTAR_EventType* mortar_eventtype) +{ + switch (eventtype) { + case SDL_EVENT_QUIT: + *mortar_eventtype = MORTAR_EVENT_QUIT; + return true; + case SDL_EVENT_TERMINATING: + *mortar_eventtype = MORTAR_EVENT_TERMINATING; + return true; + case SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED: + *mortar_eventtype = MORTAR_EVENT_WINDOW_PIXEL_SIZE_CHANGED; + return true; + case SDL_EVENT_WINDOW_FOCUS_GAINED: + *mortar_eventtype = MORTAR_EVENT_WINDOW_FOCUS_GAINED; + return true; + case SDL_EVENT_WINDOW_FOCUS_LOST: + *mortar_eventtype = MORTAR_EVENT_WINDOW_FOCUS_LOST; + return true; + case SDL_EVENT_WINDOW_CLOSE_REQUESTED: + *mortar_eventtype = MORTAR_EVENT_WINDOW_CLOSE_REQUESTED; + return true; + case SDL_EVENT_KEY_DOWN: + *mortar_eventtype = MORTAR_EVENT_KEY_DOWN; + return true; + case SDL_EVENT_KEY_UP: + *mortar_eventtype = MORTAR_EVENT_KEY_UP; + return true; + case SDL_EVENT_KEYBOARD_ADDED: + *mortar_eventtype = MORTAR_EVENT_KEYBOARD_ADDED; + return true; + case SDL_EVENT_KEYBOARD_REMOVED: + *mortar_eventtype = MORTAR_EVENT_KEYBOARD_REMOVED; + return true; + case SDL_EVENT_MOUSE_MOTION: + *mortar_eventtype = MORTAR_EVENT_MOUSE_MOTION; + return true; + case SDL_EVENT_MOUSE_BUTTON_DOWN: + *mortar_eventtype = MORTAR_EVENT_MOUSE_BUTTON_DOWN; + return true; + case SDL_EVENT_MOUSE_BUTTON_UP: + *mortar_eventtype = MORTAR_EVENT_MOUSE_BUTTON_UP; + return true; + case SDL_EVENT_MOUSE_ADDED: + *mortar_eventtype = MORTAR_EVENT_MOUSE_ADDED; + return true; + case SDL_EVENT_MOUSE_REMOVED: + *mortar_eventtype = MORTAR_EVENT_MOUSE_REMOVED; + return true; + case SDL_EVENT_GAMEPAD_AXIS_MOTION: + *mortar_eventtype = MORTAR_EVENT_GAMEPAD_AXIS_MOTION; + return true; + case SDL_EVENT_GAMEPAD_BUTTON_DOWN: + *mortar_eventtype = MORTAR_EVENT_GAMEPAD_BUTTON_DOWN; + return true; + case SDL_EVENT_GAMEPAD_BUTTON_UP: + *mortar_eventtype = MORTAR_EVENT_GAMEPAD_BUTTON_UP; + return true; + case SDL_EVENT_GAMEPAD_ADDED: + *mortar_eventtype = MORTAR_EVENT_GAMEPAD_ADDED; + return true; + case SDL_EVENT_GAMEPAD_REMOVED: + *mortar_eventtype = MORTAR_EVENT_GAMEPAD_REMOVED; + return true; + case SDL_EVENT_FINGER_DOWN: + *mortar_eventtype = MORTAR_EVENT_FINGER_DOWN; + return true; + case SDL_EVENT_FINGER_UP: + *mortar_eventtype = MORTAR_EVENT_FINGER_UP; + return true; + case SDL_EVENT_FINGER_MOTION: + *mortar_eventtype = MORTAR_EVENT_FINGER_MOTION; + return true; + case SDL_EVENT_FINGER_CANCELED: + *mortar_eventtype = MORTAR_EVENT_FINGER_CANCELED; + return true; + default: + if (eventtype >= SDL_EVENT_USER) { + *mortar_eventtype = (MORTAR_EventType) eventtype; + return true; + } + return false; + } +} + +void event_mortar_to_sdl3(const MORTAR_Event* mortar_event, SDL_Event* sdl3_event) +{ + SDL_zerop(sdl3_event); + sdl3_event->type = eventtype_mortar_to_sdl3(mortar_event->type); + switch (eventtype_mortar_to_mortarcategory(mortar_event->type)) { + case MORTAR_EVENT_CATEGORY_QUIT: + sdl3_event->quit.timestamp = mortar_event->quit.timestamp; + break; + case MORTAR_EVENT_CATEGORY_SYSTEM: + sdl3_event->common.timestamp = mortar_event->common.timestamp; + break; + case MORTAR_EVENT_CATEGORY_WINDOW: + sdl3_event->window.timestamp = mortar_event->quit.timestamp; + break; + case MORTAR_EVENT_CATEGORY_KEYBOARD: + sdl3_event->kdevice.timestamp = mortar_event->kdevice.timestamp; + sdl3_event->kdevice.which = mortar_event->kdevice.which; + break; + case MORTAR_EVENT_CATEGORY_KEY: + sdl3_event->key.timestamp = mortar_event->key.timestamp; + sdl3_event->key.which = mortar_event->key.which; + sdl3_event->key.key = keycode_mortar_to_sdl3(mortar_event->key.key); + sdl3_event->key.mod = keymod_mortar_to_sdl3(mortar_event->key.mod); + sdl3_event->key.repeat = mortar_event->key.repeat; + break; + case MORTAR_EVENT_CATEGORY_MOUSE_BUTTON: + sdl3_event->button.timestamp = mortar_event->button.timestamp; + sdl3_event->button.which = mortar_event->button.which; + sdl3_event->button.x = mortar_event->button.x; + sdl3_event->button.y = mortar_event->button.y; + break; + case MORTAR_EVENT_CATEGORY_MOUSE_MOTION: + sdl3_event->motion.timestamp = mortar_event->motion.timestamp; + sdl3_event->motion.which = mortar_event->motion.which; + sdl3_event->motion.state = mousebuttonflags_mortar_to_sdl3(mortar_event->motion.state); + sdl3_event->motion.x = mortar_event->motion.x; + sdl3_event->motion.y = mortar_event->motion.y; + break; + case MORTAR_EVENT_CATEGORY_MOUSE_DEVICE: + sdl3_event->mdevice.timestamp = mortar_event->mdevice.timestamp; + sdl3_event->mdevice.which = mortar_event->mdevice.which; + break; + case MORTAR_EVENT_CATEGORY_GAMEPAD_AXIS: + sdl3_event->gaxis.timestamp = mortar_event->gaxis.timestamp; + sdl3_event->gaxis.which = mortar_event->gaxis.which; + sdl3_event->gaxis.axis = mortar_event->gaxis.axis; + sdl3_event->gaxis.value = mortar_event->gaxis.value; + break; + case MORTAR_EVENT_CATEGORY_GAMEPAD_BUTTON: + sdl3_event->gbutton.timestamp = mortar_event->gbutton.timestamp; + sdl3_event->gbutton.which = mortar_event->gbutton.which; + sdl3_event->gbutton.button = mortar_event->gbutton.button; + break; + case MORTAR_EVENT_CATEGORY_GAMEPAD_DEVICE: + sdl3_event->jdevice.timestamp = mortar_event->jdevice.timestamp; + sdl3_event->jdevice.which = mortar_event->jdevice.which; + break; + case MORTAR_EVENT_CATEGORY_FINGER: + sdl3_event->tfinger.timestamp = mortar_event->tfinger.timestamp; + sdl3_event->tfinger.touchID = mortar_event->tfinger.touchID; + sdl3_event->tfinger.fingerID = mortar_event->tfinger.fingerID; + sdl3_event->tfinger.x = mortar_event->tfinger.x; + sdl3_event->tfinger.y = mortar_event->tfinger.y; + break; + case MORTAR_EVENT_CATEGORY_USER: + sdl3_event->user.timestamp = mortar_event->user.timestamp; + sdl3_event->user.code = mortar_event->user.code; + sdl3_event->user.data1 = mortar_event->user.data1; + sdl3_event->user.data2 = mortar_event->user.data2; + break; + default: + abort(); + } +} + +bool event_sdl3_to_mortar(const SDL_Event* sdl3_event, MORTAR_Event* mortar_event) +{ + bool success; + SDL_zerop(mortar_event); + if (!eventtype_sdl3_to_mortar(sdl3_event->type, &mortar_event->type)) { + return false; + } + switch (eventtype_mortar_to_mortarcategory(mortar_event->type)) { + case MORTAR_EVENT_CATEGORY_QUIT: + mortar_event->quit.timestamp = sdl3_event->quit.timestamp; + break; + case MORTAR_EVENT_CATEGORY_WINDOW: + mortar_event->window.timestamp = sdl3_event->quit.timestamp; + break; + case MORTAR_EVENT_CATEGORY_KEYBOARD: + mortar_event->kdevice.timestamp = sdl3_event->kdevice.timestamp; + mortar_event->kdevice.which = sdl3_event->kdevice.which; + break; + case MORTAR_EVENT_CATEGORY_KEY: + mortar_event->key.timestamp = sdl3_event->key.timestamp; + mortar_event->key.which = sdl3_event->key.which; + mortar_event->key.key = keycode_sdl3_to_mortar(sdl3_event->key.key); + mortar_event->key.mod = keymod_sdl3_to_mortar(sdl3_event->key.mod); + mortar_event->key.repeat = sdl3_event->key.repeat; + break; + case MORTAR_EVENT_CATEGORY_MOUSE_BUTTON: + mortar_event->button.timestamp = sdl3_event->button.timestamp; + mortar_event->button.which = sdl3_event->button.which; + mortar_event->button.x = sdl3_event->button.x; + mortar_event->button.y = sdl3_event->button.y; + break; + case MORTAR_EVENT_CATEGORY_MOUSE_MOTION: + mortar_event->motion.timestamp = sdl3_event->motion.timestamp; + mortar_event->motion.which = sdl3_event->motion.which; + mortar_event->motion.state = mousebuttonflags_sdl3_to_mortar(sdl3_event->motion.state); + mortar_event->motion.x = sdl3_event->motion.x; + mortar_event->motion.y = sdl3_event->motion.y; + break; + case MORTAR_EVENT_CATEGORY_MOUSE_DEVICE: + mortar_event->mdevice.timestamp = sdl3_event->mdevice.timestamp; + mortar_event->mdevice.which = sdl3_event->mdevice.which; + break; + case MORTAR_EVENT_CATEGORY_GAMEPAD_AXIS: + mortar_event->gaxis.timestamp = sdl3_event->gaxis.timestamp; + mortar_event->gaxis.which = sdl3_event->gaxis.which; + mortar_event->gaxis.axis = sdl3_event->gaxis.axis; + mortar_event->gaxis.value = sdl3_event->gaxis.value; + break; + case MORTAR_EVENT_CATEGORY_GAMEPAD_BUTTON: + mortar_event->gbutton.timestamp = sdl3_event->gbutton.timestamp; + mortar_event->gbutton.which = sdl3_event->gbutton.which; + mortar_event->gbutton.button = sdl3_event->gbutton.button; + break; + case MORTAR_EVENT_CATEGORY_GAMEPAD_DEVICE: + mortar_event->jdevice.timestamp = sdl3_event->jdevice.timestamp; + mortar_event->jdevice.which = sdl3_event->jdevice.which; + break; + case MORTAR_EVENT_CATEGORY_FINGER: + mortar_event->tfinger.timestamp = sdl3_event->tfinger.timestamp; + mortar_event->tfinger.touchID = sdl3_event->tfinger.touchID; + mortar_event->tfinger.fingerID = sdl3_event->tfinger.fingerID; + mortar_event->tfinger.x = sdl3_event->tfinger.x; + mortar_event->tfinger.y = sdl3_event->tfinger.y; + break; + case MORTAR_EVENT_CATEGORY_USER: + mortar_event->user.timestamp = sdl3_event->user.timestamp; + mortar_event->user.code = sdl3_event->user.code; + mortar_event->user.data1 = sdl3_event->user.data1; + mortar_event->user.data2 = sdl3_event->user.data2; + break; + default: + return false; + } + return true; +} + +bool MORTAR_PushEvent(MORTAR_Event* event) +{ + SDL_Event sdl3_event; + event_mortar_to_sdl3(event, &sdl3_event); + return SDL_PushEvent(&sdl3_event); +} + +uint32_t MORTAR_RegisterEvents(int numevents) +{ + return SDL_RegisterEvents(numevents); +} + +bool MORTAR_AddEventWatch(MORTAR_EventFilter filter, void* userdata) +{ + return SDL_AddEventWatch((SDL_EventFilter) filter, userdata); +} diff --git a/mortar/src/sdl3/sdl3_filesystem.cpp b/mortar/src/sdl3/sdl3_filesystem.cpp new file mode 100644 index 00000000..0773239b --- /dev/null +++ b/mortar/src/sdl3/sdl3_filesystem.cpp @@ -0,0 +1,79 @@ +#include "mortar/mortar_filesystem.h" +#include "sdl3_internal.h" + +#include + +static MORTAR_PathType pathtype_sdl3_to_mortar(SDL_PathType path_type) +{ + switch (path_type) { + case SDL_PATHTYPE_NONE: + return MORTAR_PATHTYPE_NONE; + case SDL_PATHTYPE_FILE: + return MORTAR_PATHTYPE_FILE; + case SDL_PATHTYPE_DIRECTORY: + return MORTAR_PATHTYPE_DIRECTORY; + case SDL_PATHTYPE_OTHER: + return MORTAR_PATHTYPE_OTHER; + default: + abort(); + } +} + +static SDL_Folder folder_mortar_to_sdl3(MORTAR_Folder mortar_folder) +{ + switch (mortar_folder) { + case MORTAR_FOLDER_DOCUMENTS: + return SDL_FOLDER_DOCUMENTS; + default: + abort(); + } +} + +char** MORTAR_GlobDirectory(const char* path, const char* pattern, int* count) +{ + return SDL_GlobDirectory(path, pattern, 0, count); +} + +bool MORTAR_GetPathInfo(const char* path, MORTAR_PathInfo* info) +{ + SDL_PathInfo sdl3_info; + bool result = SDL_GetPathInfo(path, &sdl3_info); + if (result && info) { + info->type = pathtype_sdl3_to_mortar(sdl3_info.type); + info->size = sdl3_info.size; + info->create_time = sdl3_info.create_time; + info->modify_time = sdl3_info.modify_time; + info->access_time = sdl3_info.access_time; + } + return result; +} + +bool MORTAR_RemovePath(const char* path) +{ + return SDL_RemovePath(path); +} + +bool MORTAR_RenamePath(const char* oldpath, const char* newpath) +{ + return SDL_RenamePath(oldpath, newpath); +} + +const char* MORTAR_GetBasePath() +{ + return SDL_GetBasePath(); +} + +char* MORTAR_GetPrefPath(const char* org, const char* app) +{ + return SDL_GetPrefPath(org, app); +} + +const char* MORTAR_GetUserFolder(MORTAR_Folder folder) +{ + return SDL_GetUserFolder(folder_mortar_to_sdl3(folder)); +} + +bool MORTAR_CreateDirectory(const char* path) +{ + return SDL_CreateDirectory(path); +} diff --git a/mortar/src/sdl3/sdl3_gamepad.cpp b/mortar/src/sdl3/sdl3_gamepad.cpp new file mode 100644 index 00000000..b819a86f --- /dev/null +++ b/mortar/src/sdl3/sdl3_gamepad.cpp @@ -0,0 +1,57 @@ +#include "mortar/mortar_gamepad.h" +#include "sdl3_internal.h" + +#include + +SDL_Gamepad* gamepad_mortar_to_sdl3(MORTAR_Gamepad* gamepad) +{ + return (SDL_Gamepad*) gamepad; +} + +SDL_GamepadAxis gamepadax_mortar_to_sdl3(MORTAR_GamepadAxis axis) +{ + switch (axis) { + case MORTAR_GAMEPAD_AXIS_LEFTX: + return SDL_GAMEPAD_AXIS_LEFTX; + case MORTAR_GAMEPAD_AXIS_LEFTY: + return SDL_GAMEPAD_AXIS_LEFTY; + case MORTAR_GAMEPAD_AXIS_RIGHTX: + return SDL_GAMEPAD_AXIS_RIGHTX; + case MORTAR_GAMEPAD_AXIS_RIGHTY: + return SDL_GAMEPAD_AXIS_RIGHTY; + case MORTAR_GAMEPAD_AXIS_RIGHT_TRIGGER: + return SDL_GAMEPAD_AXIS_RIGHT_TRIGGER; + default: + abort(); + } +} + +MORTAR_Gamepad* MORTAR_OpenGamepad(MORTAR_JoystickID instance_id) +{ + return (MORTAR_Gamepad*) SDL_OpenGamepad(instance_id); +} + +void MORTAR_CloseGamepad(MORTAR_Gamepad* gamepad) +{ + SDL_CloseGamepad(gamepad_mortar_to_sdl3(gamepad)); +} + +int16_t MORTAR_GetGamepadAxis(MORTAR_Gamepad* gamepad, MORTAR_GamepadAxis axis) +{ + return SDL_GetGamepadAxis(gamepad_mortar_to_sdl3(gamepad), gamepadax_mortar_to_sdl3(axis)); +} + +MORTAR_Joystick* MORTAR_GetGamepadJoystick(MORTAR_Gamepad* gamepad) +{ + return (MORTAR_Joystick*) SDL_GetGamepadJoystick(gamepad_mortar_to_sdl3(gamepad)); +} + +bool MORTAR_RumbleGamepad( + MORTAR_Gamepad* gamepad, + uint16_t low_frequency_rumble, + uint16_t high_frequency_rumble, + uint32_t duration_ms +) +{ + return SDL_RumbleGamepad(gamepad_mortar_to_sdl3(gamepad), low_frequency_rumble, high_frequency_rumble, duration_ms); +} diff --git a/mortar/src/sdl3/sdl3_haptic.cpp b/mortar/src/sdl3/sdl3_haptic.cpp new file mode 100644 index 00000000..d8281812 --- /dev/null +++ b/mortar/src/sdl3/sdl3_haptic.cpp @@ -0,0 +1,52 @@ +#include "mortar/mortar_haptic.h" +#include "sdl3_internal.h" + +SDL_Haptic* haptic_mortar_to_sdl3(MORTAR_Haptic* haptic) +{ + return (SDL_Haptic*) haptic; +} + +MORTAR_Haptic* haptic_sdl3_to_mortar(SDL_Haptic* haptic) +{ + return (MORTAR_Haptic*) haptic; +} + +bool MORTAR_InitHapticRumble(MORTAR_Haptic* haptic) +{ + return SDL_InitHapticRumble(haptic_mortar_to_sdl3(haptic)); +} + +MORTAR_HapticID* MORTAR_GetHaptics(int* count) +{ + return (MORTAR_HapticID*) SDL_GetHaptics(count); +} + +MORTAR_Haptic* MORTAR_OpenHaptic(MORTAR_HapticID instance_id) +{ + return haptic_sdl3_to_mortar(SDL_OpenHaptic(instance_id)); +} + +void MORTAR_CloseHaptic(MORTAR_Haptic* haptic) +{ + SDL_CloseHaptic(haptic_mortar_to_sdl3(haptic)); +} + +MORTAR_Haptic* MORTAR_OpenHapticFromMouse() +{ + return haptic_sdl3_to_mortar(SDL_OpenHapticFromMouse()); +} + +MORTAR_Haptic* MORTAR_OpenHapticFromJoystick(MORTAR_Joystick* joystick) +{ + return haptic_sdl3_to_mortar(SDL_OpenHapticFromJoystick(joystick_mortar_to_sdl3(joystick))); +} + +bool MORTAR_PlayHapticRumble(MORTAR_Haptic* haptic, float strength, uint32_t length) +{ + return SDL_PlayHapticRumble(haptic_mortar_to_sdl3(haptic), strength, length); +} + +MORTAR_HapticID MORTAR_GetHapticID(MORTAR_Haptic* haptic) +{ + return (MORTAR_HapticID) SDL_GetHapticID(haptic_mortar_to_sdl3(haptic)); +} diff --git a/mortar/src/sdl3/sdl3_init.cpp b/mortar/src/sdl3/sdl3_init.cpp new file mode 100644 index 00000000..4f141ea0 --- /dev/null +++ b/mortar/src/sdl3/sdl3_init.cpp @@ -0,0 +1,24 @@ +#define IMPLEMENT_DYN_SDL3 + +#include "mortar/mortar_init.h" +#include "sdl3_internal.h" + +#ifdef SDL3_DYNAMIC_LOAD +SDL3_Symbols SDL3; +#endif + +bool MORTAR_Init() +{ + SDL_SetHint(SDL_HINT_MOUSE_TOUCH_EVENTS, "0"); + SDL_SetHint(SDL_HINT_TOUCH_MOUSE_EVENTS, "0"); + + if (!SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_GAMEPAD | SDL_INIT_HAPTIC)) { + return false; + } + return true; +} + +void MORTAR_Quit() +{ + SDL_Quit(); +} diff --git a/mortar/src/sdl3/sdl3_internal.h b/mortar/src/sdl3/sdl3_internal.h new file mode 100644 index 00000000..b8ff6186 --- /dev/null +++ b/mortar/src/sdl3/sdl3_internal.h @@ -0,0 +1,41 @@ +#pragma once + +#include "mortar/backends/sdl3_dynamic.h" +#include "mortar/mortar.h" + +extern int SDL3_versionnum; + +typedef struct MORTAR_SDL_Palette { + MORTAR_Palette mortar; + SDL_Palette* sdl3_palette; + int refcount; +} MORTAR_SDL_Palette; + +extern void event_mortar_to_sdl3(const MORTAR_Event* mortar_event, SDL_Event* sdl3_event); +extern bool event_sdl3_to_mortar(const SDL_Event* sdl3_event, MORTAR_Event* mortar_event); + +extern SDL_Rect* rect_mortar_to_sdl3(const MORTAR_Rect* rect, SDL_Rect* storage); +extern SDL_FRect* frect_mortar_to_sdl3(const MORTAR_FRect* rect, SDL_FRect* storage); + +extern SDL_Keycode keycode_mortar_to_sdl3(MORTAR_Keycode keycode); +extern MORTAR_Keycode keycode_sdl3_to_mortar(SDL_Keycode keycode); +extern SDL_Keymod keymod_mortar_to_sdl3(MORTAR_Keymod keymod); +extern MORTAR_Keymod keymod_sdl3_to_mortar(SDL_Keymod keymod); + +extern SDL_MouseButtonFlags mousebuttonflags_mortar_to_sdl3(MORTAR_MouseButtonFlags flags); +extern MORTAR_MouseButtonFlags mousebuttonflags_sdl3_to_mortar(SDL_MouseButtonFlags flags); + +extern SDL_Window* window_mortar_to_sdl3(MORTAR_Window* mortar); + +extern SDL_Surface* surface_mortar_to_sdl3(MORTAR_Surface* surface); + +extern MORTAR_PixelFormat pixelformat_sdl3_to_mortar(SDL_PixelFormat format); +extern SDL_PixelFormat pixelformat_mortar_to_sdl3(MORTAR_PixelFormat format); + +extern SDL_Color color_mortar_to_sdl3(const MORTAR_Color* color); + +extern SDL_Joystick* joystick_mortar_to_sdl3(MORTAR_Joystick* joystick); + +extern SDL_IOStream* iostream_mortar_to_sdl3(MORTAR_IOStream* stream); + +extern SDL_Palette* palette_mortar_to_sdl3(const MORTAR_Palette* mortar_palette); diff --git a/mortar/src/sdl3/sdl3_iostream.cpp b/mortar/src/sdl3/sdl3_iostream.cpp new file mode 100644 index 00000000..187b3345 --- /dev/null +++ b/mortar/src/sdl3/sdl3_iostream.cpp @@ -0,0 +1,93 @@ +#include "mortar/mortar_iostream.h" +#include "sdl3_internal.h" + +#include + +static SDL_IOWhence iowhence_mortar_to_sdl3(MORTAR_IOWhence whence) +{ + switch (whence) { + case MORTAR_IO_SEEK_SET: + return SDL_IO_SEEK_SET; + case MORTAR_IO_SEEK_CUR: + return SDL_IO_SEEK_CUR; + case MORTAR_IO_SEEK_END: + return SDL_IO_SEEK_END; + default: + abort(); + } +} + +static MORTAR_IOStatus iostatus_sdl3_to_mortar(SDL_IOStatus status) +{ + switch (status) { + case SDL_IO_STATUS_READY: + return MORTAR_IO_STATUS_READY; + case SDL_IO_STATUS_ERROR: + return MORTAR_IO_STATUS_ERROR; + case SDL_IO_STATUS_EOF: + return MORTAR_IO_STATUS_EOF; + case SDL_IO_STATUS_NOT_READY: + return MORTAR_IO_STATUS_NOT_READY; + case SDL_IO_STATUS_READONLY: + return MORTAR_IO_STATUS_READONLY; + case SDL_IO_STATUS_WRITEONLY: + return MORTAR_IO_STATUS_WRITEONLY; + default: + abort(); + } +} + +SDL_IOStream* iostream_mortar_to_sdl3(MORTAR_IOStream* mortar_stream) +{ + return (SDL_IOStream*) mortar_stream; +} + +MORTAR_IOStream* MORTAR_IOFromFile(const char* file, const char* mode) +{ + return (MORTAR_IOStream*) SDL_IOFromFile(file, mode); +} + +MORTAR_IOStream* MORTAR_IOFromMem(void* mem, size_t size) +{ + return (MORTAR_IOStream*) SDL_IOFromMem(mem, size); +} + +size_t MORTAR_ReadIO(MORTAR_IOStream* context, void* ptr, size_t size) +{ + return SDL_ReadIO(iostream_mortar_to_sdl3(context), ptr, size); +} + +size_t MORTAR_WriteIO(MORTAR_IOStream* context, const void* ptr, size_t size) +{ + return SDL_WriteIO(iostream_mortar_to_sdl3(context), ptr, size); +} + +int64_t MORTAR_SeekIO(MORTAR_IOStream* context, int64_t offset, MORTAR_IOWhence whence) +{ + return SDL_SeekIO(iostream_mortar_to_sdl3(context), offset, iowhence_mortar_to_sdl3(whence)); +} + +int64_t MORTAR_TellIO(MORTAR_IOStream* context) +{ + return SDL_TellIO(iostream_mortar_to_sdl3(context)); +} + +int64_t MORTAR_GetIOSize(MORTAR_IOStream* context) +{ + return SDL_GetIOSize(iostream_mortar_to_sdl3(context)); +} + +bool MORTAR_CloseIO(MORTAR_IOStream* context) +{ + return SDL_CloseIO(iostream_mortar_to_sdl3(context)); +} + +MORTAR_IOStatus MORTAR_GetIOStatus(MORTAR_IOStream* context) +{ + return iostatus_sdl3_to_mortar(SDL_GetIOStatus(iostream_mortar_to_sdl3(context))); +} + +void* MORTAR_LoadFile(const char* file, size_t* datasize) +{ + return SDL_LoadFile(file, datasize); +} diff --git a/mortar/src/sdl3/sdl3_joystick.cpp b/mortar/src/sdl3/sdl3_joystick.cpp new file mode 100644 index 00000000..dac136c2 --- /dev/null +++ b/mortar/src/sdl3/sdl3_joystick.cpp @@ -0,0 +1,12 @@ +#include "mortar/mortar_joystick.h" +#include "sdl3_internal.h" + +SDL_Joystick* joystick_mortar_to_sdl3(MORTAR_Joystick* joystick) +{ + return (SDL_Joystick*) joystick; +} + +MORTAR_DECLSPEC const char* MORTAR_GetJoystickNameForID(MORTAR_JoystickID instance_id) +{ + return SDL_GetJoystickNameForID((SDL_JoystickID) instance_id); +} diff --git a/mortar/src/sdl3/sdl3_keyboard.cpp b/mortar/src/sdl3/sdl3_keyboard.cpp new file mode 100644 index 00000000..612c877c --- /dev/null +++ b/mortar/src/sdl3/sdl3_keyboard.cpp @@ -0,0 +1,7 @@ +#include "mortar/mortar_keyboard.h" +#include "sdl3_internal.h" + +const bool* MORTAR_GetKeyboardState(int* numkeys) +{ + return SDL_GetKeyboardState(numkeys); +} diff --git a/mortar/src/sdl3/sdl3_keycode.cpp b/mortar/src/sdl3/sdl3_keycode.cpp new file mode 100644 index 00000000..1e7fb010 --- /dev/null +++ b/mortar/src/sdl3/sdl3_keycode.cpp @@ -0,0 +1,1131 @@ +#include "mortar/mortar_keycode.h" +#include "sdl3_internal.h" + +SDL_Keycode keycode_mortar_to_sdl3(MORTAR_Keycode keycode) +{ + switch (keycode) { + case MORTARK_UNKNOWN: + return SDLK_UNKNOWN; + case MORTARK_RETURN: + return SDLK_RETURN; + case MORTARK_ESCAPE: + return SDLK_ESCAPE; + case MORTARK_BACKSPACE: + return SDLK_BACKSPACE; + case MORTARK_TAB: + return SDLK_TAB; + case MORTARK_SPACE: + return SDLK_SPACE; + case MORTARK_EXCLAIM: + return SDLK_EXCLAIM; + case MORTARK_DBLAPOSTROPHE: + return SDLK_DBLAPOSTROPHE; + case MORTARK_HASH: + return SDLK_HASH; + case MORTARK_DOLLAR: + return SDLK_DOLLAR; + case MORTARK_PERCENT: + return SDLK_PERCENT; + case MORTARK_AMPERSAND: + return SDLK_AMPERSAND; + case MORTARK_APOSTROPHE: + return SDLK_APOSTROPHE; + case MORTARK_LEFTPAREN: + return SDLK_LEFTPAREN; + case MORTARK_RIGHTPAREN: + return SDLK_RIGHTPAREN; + case MORTARK_ASTERISK: + return SDLK_ASTERISK; + case MORTARK_PLUS: + return SDLK_PLUS; + case MORTARK_COMMA: + return SDLK_COMMA; + case MORTARK_MINUS: + return SDLK_MINUS; + case MORTARK_PERIOD: + return SDLK_PERIOD; + case MORTARK_SLASH: + return SDLK_SLASH; + case MORTARK_0: + return SDLK_0; + case MORTARK_1: + return SDLK_1; + case MORTARK_2: + return SDLK_2; + case MORTARK_3: + return SDLK_3; + case MORTARK_4: + return SDLK_4; + case MORTARK_5: + return SDLK_5; + case MORTARK_6: + return SDLK_6; + case MORTARK_7: + return SDLK_7; + case MORTARK_8: + return SDLK_8; + case MORTARK_9: + return SDLK_9; + case MORTARK_COLON: + return SDLK_COLON; + case MORTARK_SEMICOLON: + return SDLK_SEMICOLON; + case MORTARK_LESS: + return SDLK_LESS; + case MORTARK_EQUALS: + return SDLK_EQUALS; + case MORTARK_GREATER: + return SDLK_GREATER; + case MORTARK_QUESTION: + return SDLK_QUESTION; + case MORTARK_AT: + return SDLK_AT; + case MORTARK_LEFTBRACKET: + return SDLK_LEFTBRACKET; + case MORTARK_BACKSLASH: + return SDLK_BACKSLASH; + case MORTARK_RIGHTBRACKET: + return SDLK_RIGHTBRACKET; + case MORTARK_CARET: + return SDLK_CARET; + case MORTARK_UNDERSCORE: + return SDLK_UNDERSCORE; + case MORTARK_GRAVE: + return SDLK_GRAVE; + case MORTARK_A: + return SDLK_A; + case MORTARK_B: + return SDLK_B; + case MORTARK_C: + return SDLK_C; + case MORTARK_D: + return SDLK_D; + case MORTARK_E: + return SDLK_E; + case MORTARK_F: + return SDLK_F; + case MORTARK_G: + return SDLK_G; + case MORTARK_H: + return SDLK_H; + case MORTARK_I: + return SDLK_I; + case MORTARK_J: + return SDLK_J; + case MORTARK_K: + return SDLK_K; + case MORTARK_L: + return SDLK_L; + case MORTARK_M: + return SDLK_M; + case MORTARK_N: + return SDLK_N; + case MORTARK_O: + return SDLK_O; + case MORTARK_P: + return SDLK_P; + case MORTARK_Q: + return SDLK_Q; + case MORTARK_R: + return SDLK_R; + case MORTARK_S: + return SDLK_S; + case MORTARK_T: + return SDLK_T; + case MORTARK_U: + return SDLK_U; + case MORTARK_V: + return SDLK_V; + case MORTARK_W: + return SDLK_W; + case MORTARK_X: + return SDLK_X; + case MORTARK_Y: + return SDLK_Y; + case MORTARK_Z: + return SDLK_Z; + case MORTARK_LEFTBRACE: + return SDLK_LEFTBRACE; + case MORTARK_PIPE: + return SDLK_PIPE; + case MORTARK_RIGHTBRACE: + return SDLK_RIGHTBRACE; + case MORTARK_TILDE: + return SDLK_TILDE; + case MORTARK_DELETE: + return SDLK_DELETE; + case MORTARK_PLUSMINUS: + return SDLK_PLUSMINUS; + case MORTARK_CAPSLOCK: + return SDLK_CAPSLOCK; + case MORTARK_F1: + return SDLK_F1; + case MORTARK_F2: + return SDLK_F2; + case MORTARK_F3: + return SDLK_F3; + case MORTARK_F4: + return SDLK_F4; + case MORTARK_F5: + return SDLK_F5; + case MORTARK_F6: + return SDLK_F6; + case MORTARK_F7: + return SDLK_F7; + case MORTARK_F8: + return SDLK_F8; + case MORTARK_F9: + return SDLK_F9; + case MORTARK_F10: + return SDLK_F10; + case MORTARK_F11: + return SDLK_F11; + case MORTARK_F12: + return SDLK_F12; + case MORTARK_PRINTSCREEN: + return SDLK_PRINTSCREEN; + case MORTARK_SCROLLLOCK: + return SDLK_SCROLLLOCK; + case MORTARK_PAUSE: + return SDLK_PAUSE; + case MORTARK_INSERT: + return SDLK_INSERT; + case MORTARK_HOME: + return SDLK_HOME; + case MORTARK_PAGEUP: + return SDLK_PAGEUP; + case MORTARK_END: + return SDLK_END; + case MORTARK_PAGEDOWN: + return SDLK_PAGEDOWN; + case MORTARK_RIGHT: + return SDLK_RIGHT; + case MORTARK_LEFT: + return SDLK_LEFT; + case MORTARK_DOWN: + return SDLK_DOWN; + case MORTARK_UP: + return SDLK_UP; + case MORTARK_NUMLOCKCLEAR: + return SDLK_NUMLOCKCLEAR; + case MORTARK_KP_DIVIDE: + return SDLK_KP_DIVIDE; + case MORTARK_KP_MULTIPLY: + return SDLK_KP_MULTIPLY; + case MORTARK_KP_MINUS: + return SDLK_KP_MINUS; + case MORTARK_KP_PLUS: + return SDLK_KP_PLUS; + case MORTARK_KP_ENTER: + return SDLK_KP_ENTER; + case MORTARK_KP_1: + return SDLK_KP_1; + case MORTARK_KP_2: + return SDLK_KP_2; + case MORTARK_KP_3: + return SDLK_KP_3; + case MORTARK_KP_4: + return SDLK_KP_4; + case MORTARK_KP_5: + return SDLK_KP_5; + case MORTARK_KP_6: + return SDLK_KP_6; + case MORTARK_KP_7: + return SDLK_KP_7; + case MORTARK_KP_8: + return SDLK_KP_8; + case MORTARK_KP_9: + return SDLK_KP_9; + case MORTARK_KP_0: + return SDLK_KP_0; + case MORTARK_KP_PERIOD: + return SDLK_KP_PERIOD; + case MORTARK_APPLICATION: + return SDLK_APPLICATION; + case MORTARK_POWER: + return SDLK_POWER; + case MORTARK_KP_EQUALS: + return SDLK_KP_EQUALS; + case MORTARK_F13: + return SDLK_F13; + case MORTARK_F14: + return SDLK_F14; + case MORTARK_F15: + return SDLK_F15; + case MORTARK_F16: + return SDLK_F16; + case MORTARK_F17: + return SDLK_F17; + case MORTARK_F18: + return SDLK_F18; + case MORTARK_F19: + return SDLK_F19; + case MORTARK_F20: + return SDLK_F20; + case MORTARK_F21: + return SDLK_F21; + case MORTARK_F22: + return SDLK_F22; + case MORTARK_F23: + return SDLK_F23; + case MORTARK_F24: + return SDLK_F24; + case MORTARK_EXECUTE: + return SDLK_EXECUTE; + case MORTARK_HELP: + return SDLK_HELP; + case MORTARK_MENU: + return SDLK_MENU; + case MORTARK_SELECT: + return SDLK_SELECT; + case MORTARK_STOP: + return SDLK_STOP; + case MORTARK_AGAIN: + return SDLK_AGAIN; + case MORTARK_UNDO: + return SDLK_UNDO; + case MORTARK_CUT: + return SDLK_CUT; + case MORTARK_COPY: + return SDLK_COPY; + case MORTARK_PASTE: + return SDLK_PASTE; + case MORTARK_FIND: + return SDLK_FIND; + case MORTARK_MUTE: + return SDLK_MUTE; + case MORTARK_VOLUMEUP: + return SDLK_VOLUMEUP; + case MORTARK_VOLUMEDOWN: + return SDLK_VOLUMEDOWN; + case MORTARK_KP_COMMA: + return SDLK_KP_COMMA; + case MORTARK_KP_EQUALSAS400: + return SDLK_KP_EQUALSAS400; + case MORTARK_ALTERASE: + return SDLK_ALTERASE; + case MORTARK_SYSREQ: + return SDLK_SYSREQ; + case MORTARK_CANCEL: + return SDLK_CANCEL; + case MORTARK_CLEAR: + return SDLK_CLEAR; + case MORTARK_PRIOR: + return SDLK_PRIOR; + case MORTARK_RETURN2: + return SDLK_RETURN2; + case MORTARK_SEPARATOR: + return SDLK_SEPARATOR; + case MORTARK_OUT: + return SDLK_OUT; + case MORTARK_OPER: + return SDLK_OPER; + case MORTARK_CLEARAGAIN: + return SDLK_CLEARAGAIN; + case MORTARK_CRSEL: + return SDLK_CRSEL; + case MORTARK_EXSEL: + return SDLK_EXSEL; + case MORTARK_KP_00: + return SDLK_KP_00; + case MORTARK_KP_000: + return SDLK_KP_000; + case MORTARK_THOUSANDSSEPARATOR: + return SDLK_THOUSANDSSEPARATOR; + case MORTARK_DECIMALSEPARATOR: + return SDLK_DECIMALSEPARATOR; + case MORTARK_CURRENCYUNIT: + return SDLK_CURRENCYUNIT; + case MORTARK_CURRENCYSUBUNIT: + return SDLK_CURRENCYSUBUNIT; + case MORTARK_KP_LEFTPAREN: + return SDLK_KP_LEFTPAREN; + case MORTARK_KP_RIGHTPAREN: + return SDLK_KP_RIGHTPAREN; + case MORTARK_KP_LEFTBRACE: + return SDLK_KP_LEFTBRACE; + case MORTARK_KP_RIGHTBRACE: + return SDLK_KP_RIGHTBRACE; + case MORTARK_KP_TAB: + return SDLK_KP_TAB; + case MORTARK_KP_BACKSPACE: + return SDLK_KP_BACKSPACE; + case MORTARK_KP_A: + return SDLK_KP_A; + case MORTARK_KP_B: + return SDLK_KP_B; + case MORTARK_KP_C: + return SDLK_KP_C; + case MORTARK_KP_D: + return SDLK_KP_D; + case MORTARK_KP_E: + return SDLK_KP_E; + case MORTARK_KP_F: + return SDLK_KP_F; + case MORTARK_KP_XOR: + return SDLK_KP_XOR; + case MORTARK_KP_POWER: + return SDLK_KP_POWER; + case MORTARK_KP_PERCENT: + return SDLK_KP_PERCENT; + case MORTARK_KP_LESS: + return SDLK_KP_LESS; + case MORTARK_KP_GREATER: + return SDLK_KP_GREATER; + case MORTARK_KP_AMPERSAND: + return SDLK_KP_AMPERSAND; + case MORTARK_KP_DBLAMPERSAND: + return SDLK_KP_DBLAMPERSAND; + case MORTARK_KP_VERTICALBAR: + return SDLK_KP_VERTICALBAR; + case MORTARK_KP_DBLVERTICALBAR: + return SDLK_KP_DBLVERTICALBAR; + case MORTARK_KP_COLON: + return SDLK_KP_COLON; + case MORTARK_KP_HASH: + return SDLK_KP_HASH; + case MORTARK_KP_SPACE: + return SDLK_KP_SPACE; + case MORTARK_KP_AT: + return SDLK_KP_AT; + case MORTARK_KP_EXCLAM: + return SDLK_KP_EXCLAM; + case MORTARK_KP_MEMSTORE: + return SDLK_KP_MEMSTORE; + case MORTARK_KP_MEMRECALL: + return SDLK_KP_MEMRECALL; + case MORTARK_KP_MEMCLEAR: + return SDLK_KP_MEMCLEAR; + case MORTARK_KP_MEMADD: + return SDLK_KP_MEMADD; + case MORTARK_KP_MEMSUBTRACT: + return SDLK_KP_MEMSUBTRACT; + case MORTARK_KP_MEMMULTIPLY: + return SDLK_KP_MEMMULTIPLY; + case MORTARK_KP_MEMDIVIDE: + return SDLK_KP_MEMDIVIDE; + case MORTARK_KP_PLUSMINUS: + return SDLK_KP_PLUSMINUS; + case MORTARK_KP_CLEAR: + return SDLK_KP_CLEAR; + case MORTARK_KP_CLEARENTRY: + return SDLK_KP_CLEARENTRY; + case MORTARK_KP_BINARY: + return SDLK_KP_BINARY; + case MORTARK_KP_OCTAL: + return SDLK_KP_OCTAL; + case MORTARK_KP_DECIMAL: + return SDLK_KP_DECIMAL; + case MORTARK_KP_HEXADECIMAL: + return SDLK_KP_HEXADECIMAL; + case MORTARK_LCTRL: + return SDLK_LCTRL; + case MORTARK_LSHIFT: + return SDLK_LSHIFT; + case MORTARK_LALT: + return SDLK_LALT; + case MORTARK_LGUI: + return SDLK_LGUI; + case MORTARK_RCTRL: + return SDLK_RCTRL; + case MORTARK_RSHIFT: + return SDLK_RSHIFT; + case MORTARK_RALT: + return SDLK_RALT; + case MORTARK_RGUI: + return SDLK_RGUI; + case MORTARK_MODE: + return SDLK_MODE; + case MORTARK_SLEEP: + return SDLK_SLEEP; + case MORTARK_WAKE: + return SDLK_WAKE; + case MORTARK_CHANNEL_INCREMENT: + return SDLK_CHANNEL_INCREMENT; + case MORTARK_CHANNEL_DECREMENT: + return SDLK_CHANNEL_DECREMENT; + case MORTARK_MEDIA_PLAY: + return SDLK_MEDIA_PLAY; + case MORTARK_MEDIA_PAUSE: + return SDLK_MEDIA_PAUSE; + case MORTARK_MEDIA_RECORD: + return SDLK_MEDIA_RECORD; + case MORTARK_MEDIA_FAST_FORWARD: + return SDLK_MEDIA_FAST_FORWARD; + case MORTARK_MEDIA_REWIND: + return SDLK_MEDIA_REWIND; + case MORTARK_MEDIA_NEXT_TRACK: + return SDLK_MEDIA_NEXT_TRACK; + case MORTARK_MEDIA_PREVIOUS_TRACK: + return SDLK_MEDIA_PREVIOUS_TRACK; + case MORTARK_MEDIA_STOP: + return SDLK_MEDIA_STOP; + case MORTARK_MEDIA_EJECT: + return SDLK_MEDIA_EJECT; + case MORTARK_MEDIA_PLAY_PAUSE: + return SDLK_MEDIA_PLAY_PAUSE; + case MORTARK_MEDIA_SELECT: + return SDLK_MEDIA_SELECT; + case MORTARK_AC_NEW: + return SDLK_AC_NEW; + case MORTARK_AC_OPEN: + return SDLK_AC_OPEN; + case MORTARK_AC_CLOSE: + return SDLK_AC_CLOSE; + case MORTARK_AC_EXIT: + return SDLK_AC_EXIT; + case MORTARK_AC_SAVE: + return SDLK_AC_SAVE; + case MORTARK_AC_PRINT: + return SDLK_AC_PRINT; + case MORTARK_AC_PROPERTIES: + return SDLK_AC_PROPERTIES; + case MORTARK_AC_SEARCH: + return SDLK_AC_SEARCH; + case MORTARK_AC_HOME: + return SDLK_AC_HOME; + case MORTARK_AC_BACK: + return SDLK_AC_BACK; + case MORTARK_AC_FORWARD: + return SDLK_AC_FORWARD; + case MORTARK_AC_STOP: + return SDLK_AC_STOP; + case MORTARK_AC_REFRESH: + return SDLK_AC_REFRESH; + case MORTARK_AC_BOOKMARKS: + return SDLK_AC_BOOKMARKS; + case MORTARK_SOFTLEFT: + return SDLK_SOFTLEFT; + case MORTARK_SOFTRIGHT: + return SDLK_SOFTRIGHT; + case MORTARK_CALL: + return SDLK_CALL; + case MORTARK_ENDCALL: + return SDLK_ENDCALL; + case MORTARK_LEFT_TAB: + return SDLK_LEFT_TAB; + case MORTARK_LEVEL5_SHIFT: + return SDLK_LEVEL5_SHIFT; + case MORTARK_MULTI_KEY_COMPOSE: + return SDLK_MULTI_KEY_COMPOSE; + case MORTARK_LMETA: + return SDLK_LMETA; + case MORTARK_RMETA: + return SDLK_RMETA; + case MORTARK_LHYPER: + return SDLK_LHYPER; + case MORTARK_RHYPER: + return SDLK_RHYPER; + default: + return keycode; + } +} +MORTAR_Keycode keycode_sdl3_to_mortar(SDL_Keycode keycode) +{ + switch (keycode) { + case SDLK_UNKNOWN: + return MORTARK_UNKNOWN; + case SDLK_RETURN: + return MORTARK_RETURN; + case SDLK_ESCAPE: + return MORTARK_ESCAPE; + case SDLK_BACKSPACE: + return MORTARK_BACKSPACE; + case SDLK_TAB: + return MORTARK_TAB; + case SDLK_SPACE: + return MORTARK_SPACE; + case SDLK_EXCLAIM: + return MORTARK_EXCLAIM; + case SDLK_DBLAPOSTROPHE: + return MORTARK_DBLAPOSTROPHE; + case SDLK_HASH: + return MORTARK_HASH; + case SDLK_DOLLAR: + return MORTARK_DOLLAR; + case SDLK_PERCENT: + return MORTARK_PERCENT; + case SDLK_AMPERSAND: + return MORTARK_AMPERSAND; + case SDLK_APOSTROPHE: + return MORTARK_APOSTROPHE; + case SDLK_LEFTPAREN: + return MORTARK_LEFTPAREN; + case SDLK_RIGHTPAREN: + return MORTARK_RIGHTPAREN; + case SDLK_ASTERISK: + return MORTARK_ASTERISK; + case SDLK_PLUS: + return MORTARK_PLUS; + case SDLK_COMMA: + return MORTARK_COMMA; + case SDLK_MINUS: + return MORTARK_MINUS; + case SDLK_PERIOD: + return MORTARK_PERIOD; + case SDLK_SLASH: + return MORTARK_SLASH; + case SDLK_0: + return MORTARK_0; + case SDLK_1: + return MORTARK_1; + case SDLK_2: + return MORTARK_2; + case SDLK_3: + return MORTARK_3; + case SDLK_4: + return MORTARK_4; + case SDLK_5: + return MORTARK_5; + case SDLK_6: + return MORTARK_6; + case SDLK_7: + return MORTARK_7; + case SDLK_8: + return MORTARK_8; + case SDLK_9: + return MORTARK_9; + case SDLK_COLON: + return MORTARK_COLON; + case SDLK_SEMICOLON: + return MORTARK_SEMICOLON; + case SDLK_LESS: + return MORTARK_LESS; + case SDLK_EQUALS: + return MORTARK_EQUALS; + case SDLK_GREATER: + return MORTARK_GREATER; + case SDLK_QUESTION: + return MORTARK_QUESTION; + case SDLK_AT: + return MORTARK_AT; + case SDLK_LEFTBRACKET: + return MORTARK_LEFTBRACKET; + case SDLK_BACKSLASH: + return MORTARK_BACKSLASH; + case SDLK_RIGHTBRACKET: + return MORTARK_RIGHTBRACKET; + case SDLK_CARET: + return MORTARK_CARET; + case SDLK_UNDERSCORE: + return MORTARK_UNDERSCORE; + case SDLK_GRAVE: + return MORTARK_GRAVE; + case SDLK_A: + return MORTARK_A; + case SDLK_B: + return MORTARK_B; + case SDLK_C: + return MORTARK_C; + case SDLK_D: + return MORTARK_D; + case SDLK_E: + return MORTARK_E; + case SDLK_F: + return MORTARK_F; + case SDLK_G: + return MORTARK_G; + case SDLK_H: + return MORTARK_H; + case SDLK_I: + return MORTARK_I; + case SDLK_J: + return MORTARK_J; + case SDLK_K: + return MORTARK_K; + case SDLK_L: + return MORTARK_L; + case SDLK_M: + return MORTARK_M; + case SDLK_N: + return MORTARK_N; + case SDLK_O: + return MORTARK_O; + case SDLK_P: + return MORTARK_P; + case SDLK_Q: + return MORTARK_Q; + case SDLK_R: + return MORTARK_R; + case SDLK_S: + return MORTARK_S; + case SDLK_T: + return MORTARK_T; + case SDLK_U: + return MORTARK_U; + case SDLK_V: + return MORTARK_V; + case SDLK_W: + return MORTARK_W; + case SDLK_X: + return MORTARK_X; + case SDLK_Y: + return MORTARK_Y; + case SDLK_Z: + return MORTARK_Z; + case SDLK_LEFTBRACE: + return MORTARK_LEFTBRACE; + case SDLK_PIPE: + return MORTARK_PIPE; + case SDLK_RIGHTBRACE: + return MORTARK_RIGHTBRACE; + case SDLK_TILDE: + return MORTARK_TILDE; + case SDLK_DELETE: + return MORTARK_DELETE; + case SDLK_PLUSMINUS: + return MORTARK_PLUSMINUS; + case SDLK_CAPSLOCK: + return MORTARK_CAPSLOCK; + case SDLK_F1: + return MORTARK_F1; + case SDLK_F2: + return MORTARK_F2; + case SDLK_F3: + return MORTARK_F3; + case SDLK_F4: + return MORTARK_F4; + case SDLK_F5: + return MORTARK_F5; + case SDLK_F6: + return MORTARK_F6; + case SDLK_F7: + return MORTARK_F7; + case SDLK_F8: + return MORTARK_F8; + case SDLK_F9: + return MORTARK_F9; + case SDLK_F10: + return MORTARK_F10; + case SDLK_F11: + return MORTARK_F11; + case SDLK_F12: + return MORTARK_F12; + case SDLK_PRINTSCREEN: + return MORTARK_PRINTSCREEN; + case SDLK_SCROLLLOCK: + return MORTARK_SCROLLLOCK; + case SDLK_PAUSE: + return MORTARK_PAUSE; + case SDLK_INSERT: + return MORTARK_INSERT; + case SDLK_HOME: + return MORTARK_HOME; + case SDLK_PAGEUP: + return MORTARK_PAGEUP; + case SDLK_END: + return MORTARK_END; + case SDLK_PAGEDOWN: + return MORTARK_PAGEDOWN; + case SDLK_RIGHT: + return MORTARK_RIGHT; + case SDLK_LEFT: + return MORTARK_LEFT; + case SDLK_DOWN: + return MORTARK_DOWN; + case SDLK_UP: + return MORTARK_UP; + case SDLK_NUMLOCKCLEAR: + return MORTARK_NUMLOCKCLEAR; + case SDLK_KP_DIVIDE: + return MORTARK_KP_DIVIDE; + case SDLK_KP_MULTIPLY: + return MORTARK_KP_MULTIPLY; + case SDLK_KP_MINUS: + return MORTARK_KP_MINUS; + case SDLK_KP_PLUS: + return MORTARK_KP_PLUS; + case SDLK_KP_ENTER: + return MORTARK_KP_ENTER; + case SDLK_KP_1: + return MORTARK_KP_1; + case SDLK_KP_2: + return MORTARK_KP_2; + case SDLK_KP_3: + return MORTARK_KP_3; + case SDLK_KP_4: + return MORTARK_KP_4; + case SDLK_KP_5: + return MORTARK_KP_5; + case SDLK_KP_6: + return MORTARK_KP_6; + case SDLK_KP_7: + return MORTARK_KP_7; + case SDLK_KP_8: + return MORTARK_KP_8; + case SDLK_KP_9: + return MORTARK_KP_9; + case SDLK_KP_0: + return MORTARK_KP_0; + case SDLK_KP_PERIOD: + return MORTARK_KP_PERIOD; + case SDLK_APPLICATION: + return MORTARK_APPLICATION; + case SDLK_POWER: + return MORTARK_POWER; + case SDLK_KP_EQUALS: + return MORTARK_KP_EQUALS; + case SDLK_F13: + return MORTARK_F13; + case SDLK_F14: + return MORTARK_F14; + case SDLK_F15: + return MORTARK_F15; + case SDLK_F16: + return MORTARK_F16; + case SDLK_F17: + return MORTARK_F17; + case SDLK_F18: + return MORTARK_F18; + case SDLK_F19: + return MORTARK_F19; + case SDLK_F20: + return MORTARK_F20; + case SDLK_F21: + return MORTARK_F21; + case SDLK_F22: + return MORTARK_F22; + case SDLK_F23: + return MORTARK_F23; + case SDLK_F24: + return MORTARK_F24; + case SDLK_EXECUTE: + return MORTARK_EXECUTE; + case SDLK_HELP: + return MORTARK_HELP; + case SDLK_MENU: + return MORTARK_MENU; + case SDLK_SELECT: + return MORTARK_SELECT; + case SDLK_STOP: + return MORTARK_STOP; + case SDLK_AGAIN: + return MORTARK_AGAIN; + case SDLK_UNDO: + return MORTARK_UNDO; + case SDLK_CUT: + return MORTARK_CUT; + case SDLK_COPY: + return MORTARK_COPY; + case SDLK_PASTE: + return MORTARK_PASTE; + case SDLK_FIND: + return MORTARK_FIND; + case SDLK_MUTE: + return MORTARK_MUTE; + case SDLK_VOLUMEUP: + return MORTARK_VOLUMEUP; + case SDLK_VOLUMEDOWN: + return MORTARK_VOLUMEDOWN; + case SDLK_KP_COMMA: + return MORTARK_KP_COMMA; + case SDLK_KP_EQUALSAS400: + return MORTARK_KP_EQUALSAS400; + case SDLK_ALTERASE: + return MORTARK_ALTERASE; + case SDLK_SYSREQ: + return MORTARK_SYSREQ; + case SDLK_CANCEL: + return MORTARK_CANCEL; + case SDLK_CLEAR: + return MORTARK_CLEAR; + case SDLK_PRIOR: + return MORTARK_PRIOR; + case SDLK_RETURN2: + return MORTARK_RETURN2; + case SDLK_SEPARATOR: + return MORTARK_SEPARATOR; + case SDLK_OUT: + return MORTARK_OUT; + case SDLK_OPER: + return MORTARK_OPER; + case SDLK_CLEARAGAIN: + return MORTARK_CLEARAGAIN; + case SDLK_CRSEL: + return MORTARK_CRSEL; + case SDLK_EXSEL: + return MORTARK_EXSEL; + case SDLK_KP_00: + return MORTARK_KP_00; + case SDLK_KP_000: + return MORTARK_KP_000; + case SDLK_THOUSANDSSEPARATOR: + return MORTARK_THOUSANDSSEPARATOR; + case SDLK_DECIMALSEPARATOR: + return MORTARK_DECIMALSEPARATOR; + case SDLK_CURRENCYUNIT: + return MORTARK_CURRENCYUNIT; + case SDLK_CURRENCYSUBUNIT: + return MORTARK_CURRENCYSUBUNIT; + case SDLK_KP_LEFTPAREN: + return MORTARK_KP_LEFTPAREN; + case SDLK_KP_RIGHTPAREN: + return MORTARK_KP_RIGHTPAREN; + case SDLK_KP_LEFTBRACE: + return MORTARK_KP_LEFTBRACE; + case SDLK_KP_RIGHTBRACE: + return MORTARK_KP_RIGHTBRACE; + case SDLK_KP_TAB: + return MORTARK_KP_TAB; + case SDLK_KP_BACKSPACE: + return MORTARK_KP_BACKSPACE; + case SDLK_KP_A: + return MORTARK_KP_A; + case SDLK_KP_B: + return MORTARK_KP_B; + case SDLK_KP_C: + return MORTARK_KP_C; + case SDLK_KP_D: + return MORTARK_KP_D; + case SDLK_KP_E: + return MORTARK_KP_E; + case SDLK_KP_F: + return MORTARK_KP_F; + case SDLK_KP_XOR: + return MORTARK_KP_XOR; + case SDLK_KP_POWER: + return MORTARK_KP_POWER; + case SDLK_KP_PERCENT: + return MORTARK_KP_PERCENT; + case SDLK_KP_LESS: + return MORTARK_KP_LESS; + case SDLK_KP_GREATER: + return MORTARK_KP_GREATER; + case SDLK_KP_AMPERSAND: + return MORTARK_KP_AMPERSAND; + case SDLK_KP_DBLAMPERSAND: + return MORTARK_KP_DBLAMPERSAND; + case SDLK_KP_VERTICALBAR: + return MORTARK_KP_VERTICALBAR; + case SDLK_KP_DBLVERTICALBAR: + return MORTARK_KP_DBLVERTICALBAR; + case SDLK_KP_COLON: + return MORTARK_KP_COLON; + case SDLK_KP_HASH: + return MORTARK_KP_HASH; + case SDLK_KP_SPACE: + return MORTARK_KP_SPACE; + case SDLK_KP_AT: + return MORTARK_KP_AT; + case SDLK_KP_EXCLAM: + return MORTARK_KP_EXCLAM; + case SDLK_KP_MEMSTORE: + return MORTARK_KP_MEMSTORE; + case SDLK_KP_MEMRECALL: + return MORTARK_KP_MEMRECALL; + case SDLK_KP_MEMCLEAR: + return MORTARK_KP_MEMCLEAR; + case SDLK_KP_MEMADD: + return MORTARK_KP_MEMADD; + case SDLK_KP_MEMSUBTRACT: + return MORTARK_KP_MEMSUBTRACT; + case SDLK_KP_MEMMULTIPLY: + return MORTARK_KP_MEMMULTIPLY; + case SDLK_KP_MEMDIVIDE: + return MORTARK_KP_MEMDIVIDE; + case SDLK_KP_PLUSMINUS: + return MORTARK_KP_PLUSMINUS; + case SDLK_KP_CLEAR: + return MORTARK_KP_CLEAR; + case SDLK_KP_CLEARENTRY: + return MORTARK_KP_CLEARENTRY; + case SDLK_KP_BINARY: + return MORTARK_KP_BINARY; + case SDLK_KP_OCTAL: + return MORTARK_KP_OCTAL; + case SDLK_KP_DECIMAL: + return MORTARK_KP_DECIMAL; + case SDLK_KP_HEXADECIMAL: + return MORTARK_KP_HEXADECIMAL; + case SDLK_LCTRL: + return MORTARK_LCTRL; + case SDLK_LSHIFT: + return MORTARK_LSHIFT; + case SDLK_LALT: + return MORTARK_LALT; + case SDLK_LGUI: + return MORTARK_LGUI; + case SDLK_RCTRL: + return MORTARK_RCTRL; + case SDLK_RSHIFT: + return MORTARK_RSHIFT; + case SDLK_RALT: + return MORTARK_RALT; + case SDLK_RGUI: + return MORTARK_RGUI; + case SDLK_MODE: + return MORTARK_MODE; + case SDLK_SLEEP: + return MORTARK_SLEEP; + case SDLK_WAKE: + return MORTARK_WAKE; + case SDLK_CHANNEL_INCREMENT: + return MORTARK_CHANNEL_INCREMENT; + case SDLK_CHANNEL_DECREMENT: + return MORTARK_CHANNEL_DECREMENT; + case SDLK_MEDIA_PLAY: + return MORTARK_MEDIA_PLAY; + case SDLK_MEDIA_PAUSE: + return MORTARK_MEDIA_PAUSE; + case SDLK_MEDIA_RECORD: + return MORTARK_MEDIA_RECORD; + case SDLK_MEDIA_FAST_FORWARD: + return MORTARK_MEDIA_FAST_FORWARD; + case SDLK_MEDIA_REWIND: + return MORTARK_MEDIA_REWIND; + case SDLK_MEDIA_NEXT_TRACK: + return MORTARK_MEDIA_NEXT_TRACK; + case SDLK_MEDIA_PREVIOUS_TRACK: + return MORTARK_MEDIA_PREVIOUS_TRACK; + case SDLK_MEDIA_STOP: + return MORTARK_MEDIA_STOP; + case SDLK_MEDIA_EJECT: + return MORTARK_MEDIA_EJECT; + case SDLK_MEDIA_PLAY_PAUSE: + return MORTARK_MEDIA_PLAY_PAUSE; + case SDLK_MEDIA_SELECT: + return MORTARK_MEDIA_SELECT; + case SDLK_AC_NEW: + return MORTARK_AC_NEW; + case SDLK_AC_OPEN: + return MORTARK_AC_OPEN; + case SDLK_AC_CLOSE: + return MORTARK_AC_CLOSE; + case SDLK_AC_EXIT: + return MORTARK_AC_EXIT; + case SDLK_AC_SAVE: + return MORTARK_AC_SAVE; + case SDLK_AC_PRINT: + return MORTARK_AC_PRINT; + case SDLK_AC_PROPERTIES: + return MORTARK_AC_PROPERTIES; + case SDLK_AC_SEARCH: + return MORTARK_AC_SEARCH; + case SDLK_AC_HOME: + return MORTARK_AC_HOME; + case SDLK_AC_BACK: + return MORTARK_AC_BACK; + case SDLK_AC_FORWARD: + return MORTARK_AC_FORWARD; + case SDLK_AC_STOP: + return MORTARK_AC_STOP; + case SDLK_AC_REFRESH: + return MORTARK_AC_REFRESH; + case SDLK_AC_BOOKMARKS: + return MORTARK_AC_BOOKMARKS; + case SDLK_SOFTLEFT: + return MORTARK_SOFTLEFT; + case SDLK_SOFTRIGHT: + return MORTARK_SOFTRIGHT; + case SDLK_CALL: + return MORTARK_CALL; + case SDLK_ENDCALL: + return MORTARK_ENDCALL; + case SDLK_LEFT_TAB: + return MORTARK_LEFT_TAB; + case SDLK_LEVEL5_SHIFT: + return MORTARK_LEVEL5_SHIFT; + case SDLK_MULTI_KEY_COMPOSE: + return MORTARK_MULTI_KEY_COMPOSE; + case SDLK_LMETA: + return MORTARK_LMETA; + case SDLK_RMETA: + return MORTARK_RMETA; + case SDLK_LHYPER: + return MORTARK_LHYPER; + case SDLK_RHYPER: + return MORTARK_RHYPER; + default: + return keycode; + } +} + +SDL_Keymod keymod_mortar_to_sdl3(MORTAR_Keymod keymod) +{ + SDL_Keymod result = 0; + if (keymod & MORTAR_KMOD_LSHIFT) { + result |= SDL_KMOD_LSHIFT; + } + if (keymod & MORTAR_KMOD_RSHIFT) { + result |= SDL_KMOD_RSHIFT; + } + if (keymod & MORTAR_KMOD_LEVEL5) { + result |= SDL_KMOD_LEVEL5; + } + if (keymod & MORTAR_KMOD_LCTRL) { + result |= SDL_KMOD_LCTRL; + } + if (keymod & MORTAR_KMOD_RCTRL) { + result |= SDL_KMOD_RCTRL; + } + if (keymod & MORTAR_KMOD_LALT) { + result |= SDL_KMOD_LALT; + } + if (keymod & MORTAR_KMOD_RALT) { + result |= SDL_KMOD_RALT; + } + if (keymod & MORTAR_KMOD_LGUI) { + result |= SDL_KMOD_LGUI; + } + if (keymod & MORTAR_KMOD_RGUI) { + result |= SDL_KMOD_RGUI; + } + if (keymod & MORTAR_KMOD_NUM) { + result |= SDL_KMOD_NUM; + } + if (keymod & MORTAR_KMOD_CAPS) { + result |= SDL_KMOD_CAPS; + } + if (keymod & MORTAR_KMOD_MODE) { + result |= SDL_KMOD_MODE; + } + if (keymod & MORTAR_KMOD_SCROLL) { + result |= SDL_KMOD_SCROLL; + } + return result; +} + +MORTAR_Keymod keymod_sdl3_to_mortar(SDL_Keymod keymod) +{ + MORTAR_Keymod result = 0; + if (keymod & SDL_KMOD_LSHIFT) { + result |= MORTAR_KMOD_LSHIFT; + } + if (keymod & SDL_KMOD_RSHIFT) { + result |= MORTAR_KMOD_RSHIFT; + } + if (keymod & SDL_KMOD_LEVEL5) { + result |= MORTAR_KMOD_LEVEL5; + } + if (keymod & SDL_KMOD_LCTRL) { + result |= MORTAR_KMOD_LCTRL; + } + if (keymod & SDL_KMOD_RCTRL) { + result |= MORTAR_KMOD_RCTRL; + } + if (keymod & SDL_KMOD_LALT) { + result |= MORTAR_KMOD_LALT; + } + if (keymod & SDL_KMOD_RALT) { + result |= MORTAR_KMOD_RALT; + } + if (keymod & SDL_KMOD_LGUI) { + result |= MORTAR_KMOD_LGUI; + } + if (keymod & SDL_KMOD_RGUI) { + result |= MORTAR_KMOD_RGUI; + } + if (keymod & SDL_KMOD_NUM) { + result |= MORTAR_KMOD_NUM; + } + if (keymod & SDL_KMOD_CAPS) { + result |= MORTAR_KMOD_CAPS; + } + if (keymod & SDL_KMOD_MODE) { + result |= MORTAR_KMOD_MODE; + } + if (keymod & SDL_KMOD_SCROLL) { + result |= MORTAR_KMOD_SCROLL; + } + return result; +} diff --git a/mortar/src/sdl3/sdl3_log.cpp b/mortar/src/sdl3/sdl3_log.cpp new file mode 100644 index 00000000..9e0047a3 --- /dev/null +++ b/mortar/src/sdl3/sdl3_log.cpp @@ -0,0 +1,84 @@ +#include "mortar/mortar_log.h" +#include "sdl3_internal.h" + +#include +#include + +static int category_mortar_to_sdl3(int category) +{ + switch (category) { + case MORTAR_LOG_CATEGORY_APPLICATION: + return SDL_LOG_CATEGORY_APPLICATION; + default: + abort(); + } +} + +static int priority_mortar_to_sdl3(int priority) +{ + switch (priority) { + case MORTAR_LOG_PRIORITY_INVALID: + return SDL_LOG_PRIORITY_INVALID; + case MORTAR_LOG_PRIORITY_TRACE: + return SDL_LOG_PRIORITY_TRACE; + case MORTAR_LOG_PRIORITY_VERBOSE: + return SDL_LOG_PRIORITY_VERBOSE; + case MORTAR_LOG_PRIORITY_DEBUG: + return SDL_LOG_PRIORITY_DEBUG; + case MORTAR_LOG_PRIORITY_INFO: + return SDL_LOG_PRIORITY_INFO; + case MORTAR_LOG_PRIORITY_WARN: + return SDL_LOG_PRIORITY_WARN; + case MORTAR_LOG_PRIORITY_ERROR: + return SDL_LOG_PRIORITY_ERROR; + case MORTAR_LOG_PRIORITY_CRITICAL: + return SDL_LOG_PRIORITY_CRITICAL; + default: + abort(); + } +} + +void MORTAR_LogError(int category, const char* fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + SDL_LogMessageV(category, SDL_LOG_PRIORITY_ERROR, fmt, ap); + va_end(ap); +} + +void MORTAR_LogWarn(int category, const char* fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + SDL_LogMessageV(category, SDL_LOG_PRIORITY_WARN, fmt, ap); + va_end(ap); +} + +void MORTAR_LogTrace(int category, const char* fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + SDL_LogMessageV(category, SDL_LOG_PRIORITY_TRACE, fmt, ap); + va_end(ap); +} + +void MORTAR_LogInfo(int category, const char* fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + SDL_LogMessageV(category, SDL_LOG_PRIORITY_INFO, fmt, ap); + va_end(ap); +} + +void MORTAR_Log(const char* fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + SDL_LogMessageV(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, fmt, ap); + va_end(ap); +} + +void MORTAR_LogMessageV(int category, MORTAR_LogPriority priority, const char* fmt, va_list ap) +{ + SDL_LogMessageV(category_mortar_to_sdl3(category), SDL_LOG_PRIORITY_INFO, fmt, ap); +} diff --git a/mortar/src/sdl3/sdl3_main.cpp b/mortar/src/sdl3/sdl3_main.cpp new file mode 100644 index 00000000..d918e205 --- /dev/null +++ b/mortar/src/sdl3/sdl3_main.cpp @@ -0,0 +1,96 @@ +#define SDL_MAIN_HANDLED +#define IMPLEMENT_DYN_SDL3 +#include "mortar/mortar_main.h" +#include "sdl3_internal.h" + +#include + +static MORTAR_AppInit_cbfn* g_mortar_AppInit; +static MORTAR_AppIterate_cbfn* g_mortar_AppIterate; +static MORTAR_AppEvent_cbfn* g_mortar_AppEvent; +static MORTAR_AppQuit_cbfn* g_mortar_AppQuit; + +int SDL3_versionnum; + +static SDL_AppResult appresult_mortar_to_sdl3(MORTAR_AppResult result) +{ + switch (result) { + case MORTAR_APP_CONTINUE: + return SDL_APP_CONTINUE; + case MORTAR_APP_SUCCESS: + return SDL_APP_SUCCESS; + case MORTAR_APP_FAILURE: + return SDL_APP_FAILURE; + default: + abort(); + } +} + +static MORTAR_AppResult appresult_sdl3_to_mortar(SDL_AppResult result) +{ + switch (result) { + case SDL_APP_CONTINUE: + return MORTAR_APP_CONTINUE; + case SDL_APP_SUCCESS: + return MORTAR_APP_SUCCESS; + case SDL_APP_FAILURE: + return MORTAR_APP_FAILURE; + default: + abort(); + } +} + +static SDL_AppResult SDLCALL sdl3_AppInit(void** appstate, int argc, char* argv[]) +{ + return appresult_mortar_to_sdl3(g_mortar_AppInit(appstate, argc, argv)); +} + +static SDL_AppResult SDLCALL sdl3_AppIterate(void* appstate) +{ + return appresult_mortar_to_sdl3(g_mortar_AppIterate(appstate)); +} + +static SDL_AppResult SDLCALL sdl3_AppEvent(void* appstate, SDL_Event* sdl3_event) +{ + MORTAR_Event mortar_event; + if (!event_sdl3_to_mortar(sdl3_event, &mortar_event)) { + return SDL_APP_CONTINUE; + } + MORTAR_AppResult mortar_app_result = g_mortar_AppEvent(appstate, &mortar_event); + return appresult_mortar_to_sdl3(mortar_app_result); +} + +static void SDLCALL sdl3_AppQuit(void* appstate, SDL_AppResult result) +{ + g_mortar_AppQuit(appstate, appresult_sdl3_to_mortar(result)); +} + +static int mortar_sdl3_main(int argc, char* argv[]) +{ + int result = SDL_EnterAppMainCallbacks(argc, argv, sdl3_AppInit, sdl3_AppIterate, sdl3_AppEvent, sdl3_AppQuit); + return result; +} + +bool MORTAR_SDL3_Initialize(void) +{ + return load_sdl3_api(); +} + +int MORTAR_SDL3_main( + int argc, + char* argv[], + MORTAR_AppInit_cbfn* init, + MORTAR_AppIterate_cbfn* iterate, + MORTAR_AppEvent_cbfn* event, + MORTAR_AppQuit_cbfn* quit +) +{ + SDL3_versionnum = SDL_GetVersion(); + g_mortar_AppInit = init; + g_mortar_AppIterate = iterate; + g_mortar_AppEvent = event; + g_mortar_AppQuit = quit; + int result = SDL_RunApp(argc, argv, mortar_sdl3_main, NULL); + unload_sdl3_api(); + return result; +} diff --git a/mortar/src/sdl3/sdl3_messagebox.cpp b/mortar/src/sdl3/sdl3_messagebox.cpp new file mode 100644 index 00000000..e037f649 --- /dev/null +++ b/mortar/src/sdl3/sdl3_messagebox.cpp @@ -0,0 +1,39 @@ +#include "mortar/mortar_messagebox.h" +#include "sdl3_internal.h" + +SDL_MessageBoxFlags messageboxflags_mortar_to_sdl3(MORTAR_MessageBoxFlags flags) +{ + SDL_MessageBoxFlags result = 0; + + if (flags & MORTAR_MESSAGEBOX_ERROR) { + result |= SDL_MESSAGEBOX_ERROR; + } + if (flags & MORTAR_MESSAGEBOX_WARNING) { + result |= SDL_MESSAGEBOX_WARNING; + } + if (flags & MORTAR_MESSAGEBOX_INFORMATION) { + result |= SDL_MESSAGEBOX_INFORMATION; + } + if (flags & MORTAR_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT) { + result |= SDL_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT; + } + if (flags & MORTAR_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT) { + result |= SDL_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT; + } + return result; +} + +bool MORTAR_ShowSimpleMessageBox( + MORTAR_MessageBoxFlags flags, + const char* title, + const char* message, + MORTAR_Window* window +) +{ + return SDL_ShowSimpleMessageBox( + messageboxflags_mortar_to_sdl3(flags), + title, + message, + window_mortar_to_sdl3(window) + ); +} diff --git a/mortar/src/sdl3/sdl3_mouse.cpp b/mortar/src/sdl3/sdl3_mouse.cpp new file mode 100644 index 00000000..f90f8d98 --- /dev/null +++ b/mortar/src/sdl3/sdl3_mouse.cpp @@ -0,0 +1,111 @@ +#include "mortar/mortar_mouse.h" +#include "sdl3_internal.h" + +#include + +static SDL_SystemCursor systemcursor_mortar_to_sdl3(MORTAR_SystemCursor id) +{ + switch (id) { + case MORTAR_SYSTEM_CURSOR_DEFAULT: + return SDL_SYSTEM_CURSOR_DEFAULT; + case MORTAR_SYSTEM_CURSOR_WAIT: + return SDL_SYSTEM_CURSOR_WAIT; + case MORTAR_SYSTEM_CURSOR_NOT_ALLOWED: + return SDL_SYSTEM_CURSOR_NOT_ALLOWED; + default: + abort(); + } +} + +SDL_MouseButtonFlags mousebuttonflags_mortar_to_sdl3(MORTAR_MouseButtonFlags flags) +{ + SDL_MouseButtonFlags result = 0; + if (flags & MORTAR_BUTTON_LMASK) { + result |= SDL_BUTTON_LMASK; + } + if (flags & MORTAR_BUTTON_MMASK) { + result |= SDL_BUTTON_MMASK; + } + if (flags & MORTAR_BUTTON_RMASK) { + result |= SDL_BUTTON_RMASK; + } + if (flags & MORTAR_BUTTON_X1MASK) { + result |= SDL_BUTTON_X1MASK; + } + if (flags & MORTAR_BUTTON_X2MASK) { + result |= SDL_BUTTON_X2MASK; + } + return result; +} + +MORTAR_MouseButtonFlags mousebuttonflags_sdl3_to_mortar(SDL_MouseButtonFlags flags) +{ + MORTAR_MouseButtonFlags result = (MORTAR_MouseButtonFlags) 0; + if (flags & SDL_BUTTON_LMASK) { + result |= MORTAR_BUTTON_LMASK; + } + if (flags & SDL_BUTTON_MMASK) { + result |= MORTAR_BUTTON_MMASK; + } + if (flags & SDL_BUTTON_RMASK) { + result |= MORTAR_BUTTON_RMASK; + } + if (flags & SDL_BUTTON_X1MASK) { + result |= MORTAR_BUTTON_X1MASK; + } + if (flags & SDL_BUTTON_X2MASK) { + result |= MORTAR_BUTTON_X2MASK; + } + return result; +} + +MORTAR_MouseButtonFlags mouse_button_flags_sdl3_to_mortar(SDL_MouseButtonFlags flags) +{ + MORTAR_MouseButtonFlags result = (MORTAR_MouseButtonFlags) 0; + if (flags & SDL_BUTTON_LMASK) { + result |= MORTAR_BUTTON_LMASK; + } + if (flags & SDL_BUTTON_MMASK) { + result |= MORTAR_BUTTON_MMASK; + } + if (flags & SDL_BUTTON_RMASK) { + result |= MORTAR_BUTTON_RMASK; + } + if (flags & SDL_BUTTON_X1MASK) { + result |= MORTAR_BUTTON_X1MASK; + } + if (flags & SDL_BUTTON_X2MASK) { + result |= MORTAR_BUTTON_X2MASK; + } + return result; +} + +bool MORTAR_ShowCursor() +{ + return SDL_ShowCursor(); +} + +bool MORTAR_HideCursor() +{ + return SDL_HideCursor(); +} + +void MORTAR_WarpMouseInWindow(MORTAR_Window* window, float x, float y) +{ + SDL_WarpMouseInWindow(window_mortar_to_sdl3(window), x, y); +} + +bool MORTAR_SetCursor(MORTAR_Cursor* cursor) +{ + return SDL_SetCursor((SDL_Cursor*) cursor); +} + +MORTAR_Cursor* MORTAR_CreateSystemCursor(MORTAR_SystemCursor id) +{ + return (MORTAR_Cursor*) SDL_CreateSystemCursor(systemcursor_mortar_to_sdl3(id)); +} + +MORTAR_MouseButtonFlags MORTAR_GetMouseState(float* x, float* y) +{ + return mouse_button_flags_sdl3_to_mortar(SDL_GetMouseState(x, y)); +} diff --git a/mortar/src/sdl3/sdl3_mutex.cpp b/mortar/src/sdl3/sdl3_mutex.cpp new file mode 100644 index 00000000..3b0af040 --- /dev/null +++ b/mortar/src/sdl3/sdl3_mutex.cpp @@ -0,0 +1,52 @@ +#include "mortar/mortar_mutex.h" +#include "sdl3_internal.h" + +SDL_Mutex* mutex_mortar_to_sdl3(MORTAR_Mutex* mutex) +{ + return (SDL_Mutex*) mutex; +} + +SDL_Semaphore* semaphore_mortar_to_sdl3(MORTAR_Semaphore* sem) +{ + return (SDL_Semaphore*) sem; +} + +MORTAR_Mutex* MORTAR_CreateMutex() +{ + return (MORTAR_Mutex*) SDL_CreateMutex(); +} + +void MORTAR_LockMutex(MORTAR_Mutex* mutex) +{ + SDL_LockMutex(mutex_mortar_to_sdl3(mutex)); +} + +void MORTAR_UnlockMutex(MORTAR_Mutex* mutex) +{ + SDL_UnlockMutex(mutex_mortar_to_sdl3(mutex)); +} + +void MORTAR_DestroyMutex(MORTAR_Mutex* mutex) +{ + SDL_DestroyMutex(mutex_mortar_to_sdl3(mutex)); +} + +MORTAR_Semaphore* MORTAR_CreateSemaphore(uint32_t initial_value) +{ + return (MORTAR_Semaphore*) SDL_CreateSemaphore(initial_value); +} + +void MORTAR_SignalSemaphore(MORTAR_Semaphore* sem) +{ + SDL_SignalSemaphore(semaphore_mortar_to_sdl3(sem)); +} + +void MORTAR_WaitSemaphore(MORTAR_Semaphore* sem) +{ + SDL_WaitSemaphore(semaphore_mortar_to_sdl3(sem)); +} + +void MORTAR_DestroySemaphore(MORTAR_Semaphore* sem) +{ + SDL_DestroySemaphore(semaphore_mortar_to_sdl3(sem)); +} diff --git a/mortar/src/sdl3/sdl3_pixels.cpp b/mortar/src/sdl3/sdl3_pixels.cpp new file mode 100644 index 00000000..d3e26574 --- /dev/null +++ b/mortar/src/sdl3/sdl3_pixels.cpp @@ -0,0 +1,257 @@ +#include "mortar/mortar_pixels.h" +#include "sdl3_internal.h" + +#include +#include + +static bool g_pixelformatdetails_initialized; +static std::unordered_map g_pixelformatdetails; + +static void insert_pixelformatdetails(MORTAR_PixelFormat pixelformat) +{ + SDL_PixelFormat sdl3_pixelformat = pixelformat_mortar_to_sdl3(pixelformat); + const SDL_PixelFormatDetails* sdl3_details = SDL_GetPixelFormatDetails(sdl3_pixelformat); + MORTAR_PixelFormatDetails new_details; + new_details.format = pixelformat_sdl3_to_mortar(sdl3_details->format); + new_details.bits_per_pixel = sdl3_details->bits_per_pixel; + new_details.Rmask = sdl3_details->Rmask; + new_details.Gmask = sdl3_details->Gmask; + new_details.Bmask = sdl3_details->Bmask; + new_details.Amask = sdl3_details->Amask; + new_details.reserved = (void*) sdl3_details; + g_pixelformatdetails[pixelformat] = new_details; +} + +static void ensure_pixelformatdetails_initialized() +{ + if (!g_pixelformatdetails_initialized) { + insert_pixelformatdetails(MORTAR_PIXELFORMAT_INDEX1MSB); + insert_pixelformatdetails(MORTAR_PIXELFORMAT_INDEX1LSB); + insert_pixelformatdetails(MORTAR_PIXELFORMAT_INDEX8); + insert_pixelformatdetails(MORTAR_PIXELFORMAT_RGBA32); + insert_pixelformatdetails(MORTAR_PIXELFORMAT_RGBX32); + insert_pixelformatdetails(MORTAR_PIXELFORMAT_XRGB32); + insert_pixelformatdetails(MORTAR_PIXELFORMAT_ARGB32); + insert_pixelformatdetails(MORTAR_PIXELFORMAT_RGBX8888); + insert_pixelformatdetails(MORTAR_PIXELFORMAT_XBGR8888); + insert_pixelformatdetails(MORTAR_PIXELFORMAT_BGRX8888); + insert_pixelformatdetails(MORTAR_PIXELFORMAT_XRGB8888); + insert_pixelformatdetails(MORTAR_PIXELFORMAT_ARGB8888); + insert_pixelformatdetails(MORTAR_PIXELFORMAT_BGRA8888); + insert_pixelformatdetails(MORTAR_PIXELFORMAT_RGBA8888); + insert_pixelformatdetails(MORTAR_PIXELFORMAT_ABGR8888); + insert_pixelformatdetails(MORTAR_PIXELFORMAT_BGR24); + g_pixelformatdetails_initialized = true; + } +} + +MORTAR_PixelFormat pixelformat_sdl3_to_mortar(SDL_PixelFormat format) +{ + SDL_assert(format != SDL_PIXELFORMAT_UNKNOWN); + switch (format) { + case SDL_PIXELFORMAT_INDEX1MSB: + return MORTAR_PIXELFORMAT_INDEX1MSB; + case SDL_PIXELFORMAT_INDEX1LSB: + return MORTAR_PIXELFORMAT_INDEX1LSB; + case SDL_PIXELFORMAT_INDEX8: + return MORTAR_PIXELFORMAT_INDEX8; + case SDL_PIXELFORMAT_RGBX8888: + return MORTAR_PIXELFORMAT_RGBX8888; + case SDL_PIXELFORMAT_XBGR8888: + return MORTAR_PIXELFORMAT_XBGR8888; + case SDL_PIXELFORMAT_BGRX8888: + return MORTAR_PIXELFORMAT_BGRX8888; + case SDL_PIXELFORMAT_XRGB8888: + return MORTAR_PIXELFORMAT_XRGB8888; + case SDL_PIXELFORMAT_ARGB8888: + return MORTAR_PIXELFORMAT_ARGB8888; + case SDL_PIXELFORMAT_BGRA8888: + return MORTAR_PIXELFORMAT_BGRA8888; + case SDL_PIXELFORMAT_RGBA8888: + return MORTAR_PIXELFORMAT_RGBA8888; + case SDL_PIXELFORMAT_ABGR8888: + return MORTAR_PIXELFORMAT_ABGR8888; + case SDL_PIXELFORMAT_BGR24: + return MORTAR_PIXELFORMAT_BGR24; + case SDL_PIXELFORMAT_UNKNOWN: + return MORTAR_PIXELFORMAT_UNKNOWN; + default: + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Unsupported SDL pixelformat (%s)", SDL_GetPixelFormatName(format)); + abort(); + } +} + +SDL_PixelFormat pixelformat_mortar_to_sdl3(MORTAR_PixelFormat format) +{ + SDL_assert(format != MORTAR_PIXELFORMAT_UNKNOWN); + switch (format) { + case MORTAR_PIXELFORMAT_INDEX1MSB: + return SDL_PIXELFORMAT_INDEX1MSB; + case MORTAR_PIXELFORMAT_INDEX1LSB: + return SDL_PIXELFORMAT_INDEX1LSB; + case MORTAR_PIXELFORMAT_INDEX8: + return SDL_PIXELFORMAT_INDEX8; + case MORTAR_PIXELFORMAT_RGBA32: + return SDL_PIXELFORMAT_RGBA32; + case MORTAR_PIXELFORMAT_RGBX32: + return SDL_PIXELFORMAT_RGBX32; + case MORTAR_PIXELFORMAT_XRGB32: + return SDL_PIXELFORMAT_XRGB32; + case MORTAR_PIXELFORMAT_ARGB32: + return SDL_PIXELFORMAT_ARGB32; + case MORTAR_PIXELFORMAT_RGBX8888: + return SDL_PIXELFORMAT_RGBX8888; + case MORTAR_PIXELFORMAT_XBGR8888: + return SDL_PIXELFORMAT_XBGR8888; + case MORTAR_PIXELFORMAT_BGRX8888: + return SDL_PIXELFORMAT_BGRX8888; + case MORTAR_PIXELFORMAT_XRGB8888: + return SDL_PIXELFORMAT_XRGB8888; + case MORTAR_PIXELFORMAT_ARGB8888: + return SDL_PIXELFORMAT_ARGB8888; + case MORTAR_PIXELFORMAT_BGRA8888: + return SDL_PIXELFORMAT_BGRA8888; + case MORTAR_PIXELFORMAT_RGBA8888: + return SDL_PIXELFORMAT_RGBA8888; + case MORTAR_PIXELFORMAT_ABGR8888: + return SDL_PIXELFORMAT_ABGR8888; + case MORTAR_PIXELFORMAT_BGR24: + return SDL_PIXELFORMAT_BGR24; + case MORTAR_PIXELFORMAT_UNKNOWN: + return SDL_PIXELFORMAT_UNKNOWN; + default: + abort(); + } +} + +SDL_Color color_mortar_to_sdl3(const MORTAR_Color* color) +{ + SDL_Color result; + result.r = color->r; + result.g = color->g; + result.b = color->b; + result.a = color->a; + return result; +} + +MORTAR_Palette* MORTAR_CreatePalette(int ncolors) +{ + MORTAR_SDL_Palette* mortar_sdl_palette = (MORTAR_SDL_Palette*) SDL_calloc(1, sizeof(MORTAR_SDL_Palette)); + if (!mortar_sdl_palette) { + return nullptr; + } + SDL_Palette* sdl3_palette = SDL_CreatePalette(ncolors); + if (!sdl3_palette) { + SDL_free(mortar_sdl_palette); + return nullptr; + } + SDL_assert(sdl3_palette->refcount == 1); + sdl3_palette->refcount += 1; + mortar_sdl_palette->refcount += 1; + mortar_sdl_palette->mortar.ncolors = sdl3_palette->ncolors; + mortar_sdl_palette->mortar.colors = (MORTAR_Color*) SDL_calloc(sizeof(MORTAR_Color), sdl3_palette->ncolors); + mortar_sdl_palette->sdl3_palette = sdl3_palette; + return &mortar_sdl_palette->mortar; +} + +void MORTAR_DestroyPalette(MORTAR_Palette* mortar_palette) +{ + if (!mortar_palette) { + return; + } + MORTAR_SDL_Palette* mortar_sdl_palette = (MORTAR_SDL_Palette*) mortar_palette; + mortar_sdl_palette->sdl3_palette->refcount -= 1; + mortar_sdl_palette->refcount -= 1; + if (mortar_sdl_palette->refcount == 0) { + SDL_DestroyPalette(mortar_sdl_palette->sdl3_palette); + SDL_free(mortar_sdl_palette->mortar.colors); + SDL_free(mortar_sdl_palette); + } +} + +bool MORTAR_SetPaletteColors( + MORTAR_Palette* mortar_palette, + const MORTAR_Color* mortar_colors, + int firstcolor, + int ncolors +) +{ + SDL_Color* sdl_colors = SDL_stack_alloc(SDL_Color, ncolors); + for (int i = 0; i < ncolors; i++) { + sdl_colors[i] = color_mortar_to_sdl3(&mortar_colors[i]); + } + bool result = SDL_SetPaletteColors(palette_mortar_to_sdl3(mortar_palette), sdl_colors, firstcolor, ncolors); + int lastcolor = firstcolor + ncolors; + lastcolor = SDL_min(mortar_palette->ncolors, lastcolor); + SDL_memcpy(&mortar_palette->colors[firstcolor], mortar_colors, (lastcolor - firstcolor) * sizeof(MORTAR_Color)); + SDL_stack_free(sdl_colors); + return result; +} + +const MORTAR_PixelFormatDetails* MORTAR_GetPixelFormatDetails(MORTAR_PixelFormat format) +{ + ensure_pixelformatdetails_initialized(); + auto it = g_pixelformatdetails.find(format); + if (it == g_pixelformatdetails.end()) { + return nullptr; + } + return &it->second; +} + +uint32_t MORTAR_MapRGBA( + const MORTAR_PixelFormatDetails* format, + const MORTAR_Palette* mortar_palette, + uint8_t r, + uint8_t g, + uint8_t b, + uint8_t a +) +{ + SDL_Palette* sdl3_palette = palette_mortar_to_sdl3(mortar_palette); + return SDL_MapRGBA((SDL_PixelFormatDetails*) format->reserved, sdl3_palette, r, g, b, a); +} + +uint32_t MORTAR_MapRGB( + const MORTAR_PixelFormatDetails* format, + const MORTAR_Palette* mortar_palette, + uint8_t r, + uint8_t g, + uint8_t b +) +{ + SDL_Palette* sdl3_palette = mortar_palette ? palette_mortar_to_sdl3(mortar_palette) : NULL; + return SDL_MapRGB((SDL_PixelFormatDetails*) format->reserved, sdl3_palette, r, g, b); +} + +void MORTAR_GetRGBA( + uint32_t pixelvalue, + const MORTAR_PixelFormatDetails* format, + const MORTAR_Palette* mortar_palette, + uint8_t* r, + uint8_t* g, + uint8_t* b, + uint8_t* a +) +{ + SDL_Palette* sdl3_palette = mortar_palette ? palette_mortar_to_sdl3(mortar_palette) : NULL; + return SDL_GetRGBA(pixelvalue, (SDL_PixelFormatDetails*) format->reserved, sdl3_palette, r, g, b, a); +} + +MORTAR_PixelFormat MORTAR_GetPixelFormatForMasks( + int bpp, + uint32_t Rmask, + uint32_t Gmask, + uint32_t Bmask, + uint32_t Amask +) +{ + SDL_PixelFormat sdl3_pixelformat = SDL_GetPixelFormatForMasks(bpp, Rmask, Gmask, Bmask, Amask); + MORTAR_PixelFormat mortar_pixelformat = pixelformat_sdl3_to_mortar(sdl3_pixelformat); + SDL_assert(mortar_pixelformat != MORTAR_PIXELFORMAT_UNKNOWN); + return mortar_pixelformat; +} + +const char* MORTAR_GetPixelFormatName(MORTAR_PixelFormat format) +{ + return SDL_GetPixelFormatName(pixelformat_mortar_to_sdl3(format)); +} diff --git a/mortar/src/sdl3/sdl3_process.cpp b/mortar/src/sdl3/sdl3_process.cpp new file mode 100644 index 00000000..6ee2df03 --- /dev/null +++ b/mortar/src/sdl3/sdl3_process.cpp @@ -0,0 +1,7 @@ +#include "mortar/mortar_process.h" +#include "sdl3_internal.h" + +MORTAR_Process* MORTAR_CreateProcess(const char* const* args, bool pipe_stdio) +{ + return (MORTAR_Process*) SDL_CreateProcess(args, pipe_stdio); +} diff --git a/mortar/src/sdl3/sdl3_public.h b/mortar/src/sdl3/sdl3_public.h new file mode 100644 index 00000000..67973621 --- /dev/null +++ b/mortar/src/sdl3/sdl3_public.h @@ -0,0 +1,12 @@ +#pragma once + +extern int MORTAR_SDL3_main( + int argc, + char* argv[], + MORTAR_AppInit_cbfn* init, + MORTAR_AppIterate_cbfn* iterate, + MORTAR_AppEvent_cbfn* event, + MORTAR_AppQuit_cbfn* quit +); + +extern bool MORTAR_SDL3_Initialize(void); diff --git a/mortar/src/sdl3/sdl3_rect.cpp b/mortar/src/sdl3/sdl3_rect.cpp new file mode 100644 index 00000000..cbbeccfe --- /dev/null +++ b/mortar/src/sdl3/sdl3_rect.cpp @@ -0,0 +1,34 @@ +#include "mortar/mortar_rect.h" +#include "sdl3_internal.h" + +#include + +SDL_Rect* rect_mortar_to_sdl3(const MORTAR_Rect* rect, SDL_Rect* storage) +{ + if (!storage) { + abort(); + } + if (!rect) { + return nullptr; + } + storage->x = rect->x; + storage->y = rect->y; + storage->w = rect->w; + storage->h = rect->h; + return storage; +} + +SDL_FRect* frect_mortar_to_sdl3(const MORTAR_FRect* rect, SDL_FRect* storage) +{ + if (!storage) { + abort(); + } + if (!rect) { + return nullptr; + } + storage->x = rect->x; + storage->y = rect->y; + storage->w = rect->w; + storage->h = rect->h; + return storage; +} diff --git a/mortar/src/sdl3/sdl3_render.cpp b/mortar/src/sdl3/sdl3_render.cpp new file mode 100644 index 00000000..d3123527 --- /dev/null +++ b/mortar/src/sdl3/sdl3_render.cpp @@ -0,0 +1,56 @@ +#include "mortar/mortar_render.h" +#include "sdl3_internal.h" + +MORTAR_Renderer* MORTAR_CreateRenderer(MORTAR_Window* window) +{ + return (MORTAR_Renderer*) SDL_CreateRenderer(window_mortar_to_sdl3(window), nullptr); +} + +void MORTAR_DestroyRenderer(MORTAR_Renderer* renderer) +{ + SDL_DestroyRenderer((SDL_Renderer*) renderer); +} + +MORTAR_Texture* MORTAR_CreateTexture(MORTAR_Renderer* renderer, MORTAR_PixelFormat format, int w, int h) +{ + return (MORTAR_Texture*) SDL_CreateTexture( + (SDL_Renderer*) renderer, + pixelformat_mortar_to_sdl3(format), + SDL_TEXTUREACCESS_STREAMING, + w, + h + ); +} + +void MORTAR_DestroyTexture(MORTAR_Texture* texture) +{ + SDL_DestroyTexture((SDL_Texture*) texture); +} + +bool MORTAR_RenderTexture( + MORTAR_Renderer* renderer, + MORTAR_Texture* texture, + const MORTAR_FRect* srcrect, + const MORTAR_FRect* dstrect +) +{ + SDL_FRect sdl3_srcrect_storage; + SDL_FRect sdl3_dstrect_storage; + return SDL_RenderTexture( + (SDL_Renderer*) renderer, + (SDL_Texture*) texture, + frect_mortar_to_sdl3(srcrect, &sdl3_srcrect_storage), + frect_mortar_to_sdl3(dstrect, &sdl3_dstrect_storage) + ); +} + +bool MORTAR_RenderPresent(MORTAR_Renderer* renderer) +{ + return SDL_RenderPresent((SDL_Renderer*) renderer); +} + +bool MORTAR_UpdateTexture(MORTAR_Texture* texture, const MORTAR_Rect* rect, const void* pixels, int pitch) +{ + SDL_Rect sdl3_rect_storage; + return SDL_UpdateTexture((SDL_Texture*) texture, rect_mortar_to_sdl3(rect, &sdl3_rect_storage), pixels, pitch); +} diff --git a/mortar/src/sdl3/sdl3_stdinc.cpp b/mortar/src/sdl3/sdl3_stdinc.cpp new file mode 100644 index 00000000..794d404a --- /dev/null +++ b/mortar/src/sdl3/sdl3_stdinc.cpp @@ -0,0 +1,122 @@ +#include "mortar/mortar_stdinc.h" +#include "sdl3_internal.h" + +void* MORTAR_malloc(size_t size) +{ + return SDL_malloc(size); +} + +void MORTAR_free(void* ptr) +{ + SDL_free(ptr); +} + +char* MORTAR_itoa(int value, char* str, int radix) +{ + return SDL_itoa(value, str, radix); +} + +void* MORTAR_memset(void* dst, int c, size_t len) +{ + return SDL_memset(dst, c, len); +} + +int MORTAR_memcmp(const void* s1, const void* s2, size_t len) +{ + return SDL_memcmp(s1, s2, len); +} + +int MORTAR_strcasecmp(const char* str1, const char* str2) +{ + return SDL_strcasecmp(str1, str2); +} + +int MORTAR_strncasecmp(const char* str1, const char* str2, size_t maxlen) +{ + return SDL_strncasecmp(str1, str2, maxlen); +} + +size_t MORTAR_strlen(const char* str) +{ + return SDL_strlen(str); +} + +char* MORTAR_strdup(const char* s) +{ + return SDL_strdup(s); +} + +size_t MORTAR_strlcpy(char* dst, const char* src, size_t maxlen) +{ + return SDL_strlcpy(dst, src, maxlen); +} + +char* MORTAR_strlwr(char* str) +{ + return SDL_strlwr(str); +} + +char* MORTAR_strupr(char* str) +{ + return SDL_strupr(str); +} + +int MORTAR_strncmp(const char* str1, const char* str2, size_t maxlen) +{ + return SDL_strncmp(str1, str2, maxlen); +} + +const char* MORTAR_strstr(const char* haystack, const char* needle) +{ + return SDL_strstr(haystack, needle); +} + +char* MORTAR_strtok_r(char* str, const char* delim, char** saveptr) +{ + return SDL_strtok_r(str, delim, saveptr); +} + +char* MORTAR_strchr(const char* str, int c) +{ + return (char*) SDL_strchr(str, c); +} + +int MORTAR_sscanf(const char* text, const char* fmt, ...) +{ + int result; + va_list ap; + va_start(ap, fmt); + result = SDL_vsscanf(text, fmt, ap); + va_end(ap); + return result; +} + +int MORTAR_snprintf(char* text, size_t maxlen, const char* fmt, ...) +{ + int result; + va_list ap; + va_start(ap, fmt); + result = SDL_vsnprintf(text, maxlen, fmt, ap); + va_end(ap); + return result; +} + +int MORTAR_tolower(int x) +{ + return SDL_tolower(x); +} + +int MORTAR_isdigit(int x) +{ + return SDL_isdigit(x); +} + +int32_t MORTAR_rand(int32_t n) +{ + return SDL_rand(n); +} + +float MORTAR_randf() +{ + return SDL_randf(); +} diff --git a/mortar/src/sdl3/sdl3_surface.cpp b/mortar/src/sdl3/sdl3_surface.cpp new file mode 100644 index 00000000..37fbac8b --- /dev/null +++ b/mortar/src/sdl3/sdl3_surface.cpp @@ -0,0 +1,224 @@ +#include "mortar/mortar_surface.h" +#include "sdl3_internal.h" + +#include +#include + +// SDL_SCALECMODE_PIXELART requires SDL3>=3.3.2 +#define COMPAT_SDL_SCALEMODE_PIXELART ((SDL_ScaleMode) 2) + +typedef struct MORTAR_SDL_Surface { + MORTAR_Surface mortar; + SDL_Surface* sdl3_surface; + MORTAR_SDL_Palette* mortar_palette; +} MORTAR_SDL_Surface; + +static SDL_ScaleMode scalemode_mortar_to_sdl3(MORTAR_ScaleMode scaleMode) +{ + switch (scaleMode) { + case MORTAR_SCALEMODE_NEAREST: + return SDL_SCALEMODE_NEAREST; + case MORTAR_SCALEMODE_LINEAR: + return SDL_SCALEMODE_LINEAR; + case MORTAR_SCALEMODE_PIXELART: + if (SDL3_versionnum >= SDL_VERSIONNUM(3, 3, 2)) { + return COMPAT_SDL_SCALEMODE_PIXELART; + } + else { + return SDL_SCALEMODE_NEAREST; + } + default: + abort(); + } +} + +SDL_Surface* surface_mortar_to_sdl3(MORTAR_Surface* mortar_surface) +{ + if (!mortar_surface) { + return nullptr; + } + MORTAR_SDL_Surface* mortar_sdl_surface = (MORTAR_SDL_Surface*) mortar_surface; + return mortar_sdl_surface->sdl3_surface; +} + +SDL_Palette* palette_mortar_to_sdl3(const MORTAR_Palette* mortar_palette) +{ + MORTAR_SDL_Palette* mortar_sdl_palette = (MORTAR_SDL_Palette*) mortar_palette; + if (!mortar_palette) { + return nullptr; + } + return mortar_sdl_palette->sdl3_palette; +} + +static MORTAR_Surface* create_mortar_surface_from_sdl3(SDL_Surface* sdl3_surface) +{ + if (!sdl3_surface) { + return NULL; + } + MORTAR_SDL_Surface* mortar_surface = (MORTAR_SDL_Surface*) SDL_calloc(1, sizeof(MORTAR_SDL_Surface)); + if (!mortar_surface) { + SDL_DestroySurface(sdl3_surface); + return nullptr; + } + mortar_surface->mortar.w = sdl3_surface->w; + mortar_surface->mortar.h = sdl3_surface->h; + mortar_surface->mortar.pitch = sdl3_surface->pitch; + mortar_surface->mortar.pixels = sdl3_surface->pixels; + mortar_surface->mortar.format = pixelformat_sdl3_to_mortar(sdl3_surface->format); + mortar_surface->sdl3_surface = sdl3_surface; + return &mortar_surface->mortar; +} + +MORTAR_Surface* MORTAR_CreateSurface(int width, int height, MORTAR_PixelFormat format) +{ + return create_mortar_surface_from_sdl3(SDL_CreateSurface(width, height, pixelformat_mortar_to_sdl3(format))); +} + +MORTAR_Surface* MORTAR_CreateSurfaceFrom(int width, int height, MORTAR_PixelFormat format, void* pixels, int pitch) +{ + return create_mortar_surface_from_sdl3( + SDL_CreateSurfaceFrom(width, height, pixelformat_mortar_to_sdl3(format), pixels, pitch) + ); +} + +void MORTAR_DestroySurface(MORTAR_Surface* mortar_surface) +{ + MORTAR_SDL_Surface* mortar_sdl_surface = (MORTAR_SDL_Surface*) mortar_surface; + if (mortar_sdl_surface->mortar_palette) { + MORTAR_DestroyPalette(&mortar_sdl_surface->mortar_palette->mortar); + } + SDL_DestroySurface(surface_mortar_to_sdl3(mortar_surface)); + SDL_free(mortar_sdl_surface); +} + +bool MORTAR_LockSurface(MORTAR_Surface* mortar_surface) +{ + return SDL_LockSurface(surface_mortar_to_sdl3(mortar_surface)); +} + +void MORTAR_UnlockSurface(MORTAR_Surface* mortar_surface) +{ + return SDL_UnlockSurface(surface_mortar_to_sdl3(mortar_surface)); +} + +bool MORTAR_FillSurfaceRect(MORTAR_Surface* dst, const MORTAR_Rect* rect, uint32_t color) +{ + SDL_Rect sdl3_rect_storage; + SDL_Rect* sdl3_rect_ptr = rect_mortar_to_sdl3(rect, &sdl3_rect_storage); + return SDL_FillSurfaceRect(surface_mortar_to_sdl3(dst), sdl3_rect_ptr, color); +} + +bool MORTAR_BlitSurface( + MORTAR_Surface* mortar_src, + const MORTAR_Rect* mortar_srcrect, + MORTAR_Surface* mortar_dst, + const MORTAR_Rect* mortar_dstrect +) +{ + SDL_Rect sdl3_srcrect_storage; + SDL_Rect* sdl3_srcrect = rect_mortar_to_sdl3(mortar_srcrect, &sdl3_srcrect_storage); + SDL_Rect sdl3_dstrect_storage; + SDL_Rect* sdl3_dstrect = rect_mortar_to_sdl3(mortar_dstrect, &sdl3_dstrect_storage); + return SDL_BlitSurface( + surface_mortar_to_sdl3(mortar_src), + sdl3_srcrect, + surface_mortar_to_sdl3(mortar_dst), + sdl3_dstrect + ); +} + +bool MORTAR_SetSurfacePalette(MORTAR_Surface* mortar_surface, MORTAR_Palette* mortar_palette) +{ + if (!mortar_surface) { + return false; + } + MORTAR_SDL_Surface* mortar_sdl_surface = (MORTAR_SDL_Surface*) mortar_surface; + if (mortar_sdl_surface->mortar_palette && &mortar_sdl_surface->mortar_palette->mortar == mortar_palette) { + return true; + } + if (mortar_sdl_surface->mortar_palette) { + MORTAR_DestroyPalette(&mortar_sdl_surface->mortar_palette->mortar); + mortar_sdl_surface->mortar_palette = NULL; + } + bool result = SDL_SetSurfacePalette(mortar_sdl_surface->sdl3_surface, palette_mortar_to_sdl3(mortar_palette)); + mortar_sdl_surface->mortar_palette = (MORTAR_SDL_Palette*) mortar_palette; + if (mortar_sdl_surface->mortar_palette) { + mortar_sdl_surface->mortar_palette->sdl3_palette->refcount += 1; + mortar_sdl_surface->mortar_palette->refcount += 1; + } + return result; +} + +MORTAR_Palette* MORTAR_GetSurfacePalette(MORTAR_Surface* mortar_surface) +{ + MORTAR_SDL_Surface* mortar_sdl_surface = (MORTAR_SDL_Surface*) mortar_surface; + if (mortar_sdl_surface == NULL) { + return NULL; + } + if (mortar_sdl_surface->mortar_palette == NULL) { + return NULL; + } + return &mortar_sdl_surface->mortar_palette->mortar; +} + +MORTAR_Surface* MORTAR_ConvertSurface(MORTAR_Surface* mortar_surface, MORTAR_PixelFormat format) +{ + MORTAR_Surface* mortar_result_surface = create_mortar_surface_from_sdl3( + SDL_ConvertSurface(surface_mortar_to_sdl3(mortar_surface), pixelformat_mortar_to_sdl3(format)) + ); + if (mortar_result_surface && mortar_result_surface->format == MORTAR_PIXELFORMAT_INDEX8) { + MORTAR_SDL_Surface* mortar_sdl_surface = (MORTAR_SDL_Surface*) mortar_surface; + MORTAR_SDL_Surface* mortar_result_sdl_surface = (MORTAR_SDL_Surface*) mortar_result_surface; + mortar_result_sdl_surface->mortar_palette = mortar_sdl_surface->mortar_palette; + if (mortar_result_sdl_surface->mortar_palette) { + mortar_result_sdl_surface->mortar_palette->sdl3_palette->refcount += 1; + mortar_result_sdl_surface->mortar_palette->refcount += 1; + } + } + return mortar_result_surface; +} + +bool MORTAR_BlitSurfaceScaled( + MORTAR_Surface* mortar_src, + const MORTAR_Rect* mortar_srcrect, + MORTAR_Surface* mortar_dst, + const MORTAR_Rect* mortar_dstrect, + MORTAR_ScaleMode mortar_scaleMode +) +{ + SDL_Rect sdl3_srcrect_storage; + SDL_Rect sdl3_dstrect_storage; + return SDL_BlitSurfaceScaled( + surface_mortar_to_sdl3(mortar_src), + rect_mortar_to_sdl3(mortar_srcrect, &sdl3_srcrect_storage), + surface_mortar_to_sdl3(mortar_dst), + rect_mortar_to_sdl3(mortar_dstrect, &sdl3_dstrect_storage), + scalemode_mortar_to_sdl3(mortar_scaleMode) + ); +} + +bool MORTAR_SetSurfaceColorKey(MORTAR_Surface* mortar_surface, bool enabled, uint32_t key) +{ + return SDL_SetSurfaceColorKey(surface_mortar_to_sdl3(mortar_surface), enabled, key); +} + +MORTAR_Surface* MORTAR_LoadBMP(const char* file) +{ + return create_mortar_surface_from_sdl3(SDL_LoadBMP(file)); +} + +MORTAR_Surface* MORTAR_LoadBMP_IO(MORTAR_IOStream* src, bool closeio) +{ + return create_mortar_surface_from_sdl3(SDL_LoadBMP_IO((SDL_IOStream*) src, closeio)); +} + +void* MORTAR_EXT_GetSurfaceProperty(MORTAR_Surface* mortar_surface, MORTAR_SurfaceProperty key, void* default_value) +{ + switch (key) { + case MORTAR_SURFACE_PROPERTY_SDL3SURFACE: + return surface_mortar_to_sdl3(mortar_surface); + default: + SDL_LogError(SDL_LOG_CATEGORY_ERROR, "MORTAR_EXT_GetSurfaceProperty: unsupported property"); + return default_value; + } +} diff --git a/mortar/src/sdl3/sdl3_system.cpp b/mortar/src/sdl3/sdl3_system.cpp new file mode 100644 index 00000000..30d3d8de --- /dev/null +++ b/mortar/src/sdl3/sdl3_system.cpp @@ -0,0 +1,13 @@ +#include "mortar/mortar_system.h" +#include "sdl3_internal.h" + +#include + +const char* MORTAR_GetAndroidExternalStoragePath() +{ +#ifdef SDL_PLAFORM_ANDROID + return SDL_GetAndroidExternalStoragePath(); +#else + return NULL; +#endif +} diff --git a/mortar/src/sdl3/sdl3_thread.cpp b/mortar/src/sdl3/sdl3_thread.cpp new file mode 100644 index 00000000..2f2ca153 --- /dev/null +++ b/mortar/src/sdl3/sdl3_thread.cpp @@ -0,0 +1,21 @@ +#include "mortar/mortar_thread.h" +#include "sdl3_internal.h" + +void MORTAR_WaitThread(MORTAR_Thread* thread, int* status) +{ + SDL_WaitThread((SDL_Thread*) thread, status); +} + +MORTAR_Thread* MORTAR_CreateThread(MORTAR_ThreadFunction fn, void* data, uint32_t stacksize) +{ + SDL_PropertiesID props = SDL_CreateProperties(); + if (!props) { + return nullptr; + } + SDL_SetPointerProperty(props, SDL_PROP_THREAD_CREATE_ENTRY_FUNCTION_POINTER, (void*) fn); + SDL_SetPointerProperty(props, SDL_PROP_THREAD_CREATE_USERDATA_POINTER, data); + SDL_SetNumberProperty(props, SDL_PROP_THREAD_CREATE_STACKSIZE_NUMBER, stacksize); + SDL_Thread* thread = SDL_CreateThreadWithProperties(props); + SDL_DestroyProperties(props); + return (MORTAR_Thread*) thread; +} diff --git a/mortar/src/sdl3/sdl3_timer.cpp b/mortar/src/sdl3/sdl3_timer.cpp new file mode 100644 index 00000000..14aefb70 --- /dev/null +++ b/mortar/src/sdl3/sdl3_timer.cpp @@ -0,0 +1,37 @@ +#include "mortar/mortar_timer.h" +#include "sdl3_internal.h" + +void MORTAR_Delay(uint32_t ms) +{ + SDL_Delay(ms); +} + +uint64_t MORTAR_GetTicks() +{ + return SDL_GetTicks(); +} + +uint64_t MORTAR_GetTicksNS() +{ + return SDL_GetTicksNS(); +} + +uint64_t MORTAR_GetPerformanceFrequency() +{ + return SDL_GetPerformanceFrequency(); +} + +uint64_t MORTAR_GetPerformanceCounter() +{ + return SDL_GetPerformanceCounter(); +} + +MORTAR_TimerID MORTAR_AddTimer(uint32_t interval, MORTAR_TimerCallback callback, void* userdata) +{ + return (SDL_TimerID) SDL_AddTimer(interval, callback, userdata); +} + +bool MORTAR_RemoveTimer(MORTAR_TimerID id) +{ + return SDL_RemoveTimer(id); +} diff --git a/mortar/src/sdl3/sdl3_version.cpp b/mortar/src/sdl3/sdl3_version.cpp new file mode 100644 index 00000000..279aa91b --- /dev/null +++ b/mortar/src/sdl3/sdl3_version.cpp @@ -0,0 +1,17 @@ +#include "mortar/mortar.h" +#include "sdl3_internal.h" + +const char* MORTAR_GetBackendDescription() +{ + static char buffer[256]; + SDL_snprintf( + buffer, + sizeof(buffer), + "SDL3 version %d.%d.%d (%s)", + SDL_VERSIONNUM_MAJOR(SDL3_versionnum), + SDL_VERSIONNUM_MINOR(SDL3_versionnum), + SDL_VERSIONNUM_MICRO(SDL3_versionnum), + SDL_GetRevision() + ); + return buffer; +} diff --git a/mortar/src/sdl3/sdl3_video.cpp b/mortar/src/sdl3/sdl3_video.cpp new file mode 100644 index 00000000..883a018a --- /dev/null +++ b/mortar/src/sdl3/sdl3_video.cpp @@ -0,0 +1,325 @@ +#include "mortar/mortar_video.h" +#include "sdl3_internal.h" + +#include +#include +#include + +typedef struct MORTAR_Window { + SDL_Window* sdl3_window = nullptr; + void* user_property = nullptr; +} MORTAR_Window; + +SDL_Window* window_mortar_to_sdl3(MORTAR_Window* mortar) +{ + if (!mortar) { + return nullptr; + } + return mortar->sdl3_window; +} + +const char* MORTAR_GetCurrentVideoDriver() +{ + return SDL_GetCurrentVideoDriver(); +} + +bool MORTAR_RaiseWindow(MORTAR_Window* mortar_window) +{ + return SDL_RaiseWindow(window_mortar_to_sdl3(mortar_window)); +} + +bool MORTAR_SetWindowSize(MORTAR_Window* mortar_window, int w, int h) +{ + return SDL_SetWindowSize(window_mortar_to_sdl3(mortar_window), w, h); +} + +bool MORTAR_SetWindowPosition(MORTAR_Window* mortar_window, int x, int y) +{ + return SDL_SetWindowPosition(window_mortar_to_sdl3(mortar_window), x, y); +} + +MORTAR_WindowFlags MORTAR_GetWindowFlags(MORTAR_Window* mortar_window) +{ + SDL_WindowFlags sdl3_flags = SDL_GetWindowFlags(window_mortar_to_sdl3(mortar_window)); + MORTAR_WindowFlags mortar_flags = (MORTAR_WindowFlags) 0; + if (sdl3_flags & SDL_WINDOW_FULLSCREEN) { + mortar_flags |= MORTAR_WINDOW_FULLSCREEN; + } + if (sdl3_flags & SDL_WINDOW_BORDERLESS) { + mortar_flags |= MORTAR_WINDOW_BORDERLESS; + } + if (sdl3_flags & SDL_WINDOW_RESIZABLE) { + mortar_flags |= MORTAR_WINDOW_RESIZABLE; + } + return mortar_flags; +} + +bool MORTAR_SetWindowBordered(MORTAR_Window* mortar_window, bool bordered) +{ + return SDL_SetWindowBordered(window_mortar_to_sdl3(mortar_window), bordered); +} + +bool MORTAR_SetWindowResizable(MORTAR_Window* mortar_window, bool resizable) +{ + return SDL_SetWindowResizable(window_mortar_to_sdl3(mortar_window), resizable); +} + +bool MORTAR_GetWindowSize(MORTAR_Window* mortar_window, int* w, int* h) +{ + return SDL_GetWindowSize(window_mortar_to_sdl3(mortar_window), w, h); +} + +bool MORTAR_GetWindowSizeInPixels(MORTAR_Window* mortar_window, int* w, int* h) +{ + return SDL_GetWindowSizeInPixels(window_mortar_to_sdl3(mortar_window), w, h); +} + +MORTAR_DisplayID MORTAR_GetPrimaryDisplay() +{ + return SDL_GetPrimaryDisplay(); +} + +MORTAR_DisplayMode** MORTAR_GetFullscreenDisplayModes(MORTAR_DisplayID displayID, int* count) +{ + int sdl3_count = 0; + SDL_DisplayMode** sdl3_modes = SDL_GetFullscreenDisplayModes(displayID, &sdl3_count); + if (!sdl3_modes) { + if (count) { + *count = 0; + } + return nullptr; + } + uint8_t* buffer = + (uint8_t*) SDL_malloc(sizeof(MORTAR_DisplayMode*) * (sdl3_count + 1) + sizeof(MORTAR_DisplayMode) * sdl3_count); + MORTAR_DisplayMode** mortar_modes_pointers = (MORTAR_DisplayMode**) buffer; + MORTAR_DisplayMode* mortar_modes_data = + (MORTAR_DisplayMode*) (buffer + sizeof(MORTAR_DisplayMode*) * (sdl3_count + 1)); + for (int i = 0; i < sdl3_count; i++) { + mortar_modes_pointers[i] = &mortar_modes_data[i]; + mortar_modes_data[i].format = pixelformat_sdl3_to_mortar(sdl3_modes[i]->format); + mortar_modes_data[i].w = sdl3_modes[i]->w; + mortar_modes_data[i].h = sdl3_modes[i]->h; + mortar_modes_data[i].refresh_rate = sdl3_modes[i]->refresh_rate; + } + mortar_modes_pointers[sdl3_count] = nullptr; + if (count) { + *count = sdl3_count; + } + SDL_free(sdl3_modes); + return mortar_modes_pointers; +} + +const MORTAR_DisplayMode* MORTAR_GetCurrentDisplayMode(MORTAR_DisplayID displayID) +{ + static MORTAR_DisplayMode mortar_display_mode; + const SDL_DisplayMode* sdl3_mode = SDL_GetCurrentDisplayMode((SDL_DisplayID) displayID); + if (!sdl3_mode) { + return nullptr; + } + mortar_display_mode.format = pixelformat_sdl3_to_mortar(sdl3_mode->format); + mortar_display_mode.w = sdl3_mode->w; + mortar_display_mode.h = sdl3_mode->h; + mortar_display_mode.refresh_rate = sdl3_mode->refresh_rate; + return &mortar_display_mode; +} + +bool MORTAR_SetWindowFullscreenMode(MORTAR_Window* mortar_window, const MORTAR_DisplayMode* mode) +{ + if (!mode) { + return SDL_SetError("mode"); + } + SDL_DisplayMode sdl3_mode; + SDL_zero(sdl3_mode); + sdl3_mode.w = mode->w; + sdl3_mode.h = mode->h; + sdl3_mode.format = pixelformat_mortar_to_sdl3(mode->format); + return SDL_SetWindowFullscreenMode(window_mortar_to_sdl3(mortar_window), &sdl3_mode); +} + +bool MORTAR_SetWindowFullscreen(MORTAR_Window* mortar_window, bool fullscreen) +{ + return SDL_SetWindowFullscreen(window_mortar_to_sdl3(mortar_window), fullscreen); +} + +bool MORTAR_GL_ExtensionSupported(const char* extension) +{ + return SDL_GL_ExtensionSupported(extension); +} + +MORTAR_FunctionPointer MORTAR_GL_GetProcAddress(const char* proc) +{ + return SDL_GL_GetProcAddress(proc); +} + +void MORTAR_GL_ResetAttributes() +{ + SDL_GL_ResetAttributes(); +} + +bool MORTAR_GL_SetAttribute(MORTAR_GLAttr attr, int value) +{ + SDL_GLAttr sdl3_attr; + switch (attr) { + case MORTAR_GL_DOUBLEBUFFER: + sdl3_attr = SDL_GL_DOUBLEBUFFER; + break; + case MORTAR_GL_DEPTH_SIZE: + sdl3_attr = SDL_GL_DEPTH_SIZE; + break; + case MORTAR_GL_MULTISAMPLEBUFFERS: + sdl3_attr = SDL_GL_MULTISAMPLEBUFFERS; + break; + case MORTAR_GL_MULTISAMPLESAMPLES: + sdl3_attr = SDL_GL_MULTISAMPLESAMPLES; + break; + case MORTAR_GL_CONTEXT_MAJOR_VERSION: + sdl3_attr = SDL_GL_CONTEXT_MAJOR_VERSION; + break; + case MORTAR_GL_CONTEXT_MINOR_VERSION: + sdl3_attr = SDL_GL_CONTEXT_MINOR_VERSION; + break; + case MORTAR_GL_CONTEXT_PROFILE_MASK: + sdl3_attr = SDL_GL_CONTEXT_PROFILE_MASK; + break; + default: + abort(); + } + return SDL_GL_SetAttribute(sdl3_attr, value); +} + +bool MORTAR_GL_MakeCurrent(MORTAR_Window* mortar_window, MORTAR_GLContext context) +{ + return SDL_GL_MakeCurrent(window_mortar_to_sdl3(mortar_window), (SDL_GLContext) context); +} + +MORTAR_GLContext MORTAR_GL_CreateContext(MORTAR_Window* mortar_window) +{ + return (MORTAR_GLContext) SDL_GL_CreateContext(window_mortar_to_sdl3(mortar_window)); +} + +bool MORTAR_GL_DestroyContext(MORTAR_GLContext context) +{ + return SDL_GL_DestroyContext((SDL_GLContext) context); +} + +bool MORTAR_GL_SwapWindow(MORTAR_Window* mortar_window) +{ + return SDL_GL_SwapWindow(window_mortar_to_sdl3(mortar_window)); +} + +bool MORTAR_SetWindowTitle(MORTAR_Window* mortar_window, const char* title) +{ + return SDL_SetWindowTitle(window_mortar_to_sdl3(mortar_window), title); +} + +bool MORTAR_SetWindowIcon(MORTAR_Window* mortar_window, MORTAR_Surface* icon) +{ + return SDL_SetWindowIcon(window_mortar_to_sdl3(mortar_window), surface_mortar_to_sdl3(icon)); +} + +bool MORTAR_GetClosestFullscreenDisplayMode( + MORTAR_DisplayID displayID, + int w, + int h, + float refresh_rate, + bool include_high_density_modes, + MORTAR_DisplayMode* closest +) +{ + SDL_DisplayMode closest_sdl3; + if (!SDL_GetClosestFullscreenDisplayMode( + (SDL_DisplayID) displayID, + w, + h, + refresh_rate, + include_high_density_modes, + &closest_sdl3 + )) { + return false; + } + closest->w = closest_sdl3.w; + closest->h = closest_sdl3.h; + closest->format = pixelformat_sdl3_to_mortar(closest_sdl3.format); + return true; +} + +MORTAR_DisplayID MORTAR_GetDisplayForWindow(MORTAR_Window* mortar_window) +{ + return (MORTAR_DisplayID) SDL_GetDisplayForWindow(window_mortar_to_sdl3(mortar_window)); +} + +MORTAR_Window* MORTAR_EX_CreateWindow(MORTAR_EX_CreateWindowProps* createProps) +{ + if (!createProps) { + SDL_SetError("createProps"); + return nullptr; + } + MORTAR_Window* mortar_window = (MORTAR_Window*) SDL_calloc(1, sizeof(MORTAR_Window)); + if (!mortar_window) { + SDL_SetError("new MORTAR_Window"); + return nullptr; + } + SDL_PropertiesID props = SDL_CreateProperties(); + if (!props) { + SDL_free(mortar_window); + return nullptr; + } + SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_WIDTH_NUMBER, createProps->width); + SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_HEIGHT_NUMBER, createProps->height); + SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_FULLSCREEN_BOOLEAN, createProps->fullscreen); + SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING, createProps->title); + SDL_SetBooleanProperty(props, SDL_PROP_WINDOW_CREATE_HIDDEN_BOOLEAN, createProps->hidden); + SDL_SetBooleanProperty(props, SDL_PROP_WINDOW_CREATE_OPENGL_BOOLEAN, createProps->opengl.enabled); + if (createProps->opengl.enabled) { + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, createProps->opengl.doublebuffer); + SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, createProps->opengl.depth_size); + } + SDL_Window* sdl3_window = SDL_CreateWindowWithProperties(props); + SDL_DestroyProperties(props); + if (!sdl3_window) { + SDL_free(mortar_window); + return nullptr; + } + mortar_window->sdl3_window = sdl3_window; + return mortar_window; +} + +void MORTAR_DestroyWindow(MORTAR_Window* mortar_window) +{ + if (!mortar_window) { + return; + } + SDL_DestroyWindow(mortar_window->sdl3_window); + SDL_free(mortar_window); +} + +bool MORTAR_EXT_SetWindowProperty(MORTAR_Window* mortar_window, MORTAR_WindowProperty key, void* prop) +{ + switch (key) { + case MORTAR_WINDOW_PROPERTY_USER: + mortar_window->user_property = prop; + return true; + default: + SDL_LogError(SDL_LOG_CATEGORY_ERROR, "MORTAR_EXT_SetWindowProperty(%d): unsupported", key); + return false; + } +} + +void* MORTAR_EXT_GetWindowProperty(MORTAR_Window* mortar_window, MORTAR_WindowProperty key, void* default_value) +{ + switch (key) { + case MORTAR_WINDOW_PROPERTY_USER: + return mortar_window->user_property; + case MORTAR_WINDOW_PROPERTY_SDL3WINDOW: + return mortar_window->sdl3_window; + case MORTAR_WINDOW_PROPERTY_HWND: + return SDL_GetPointerProperty( + SDL_GetWindowProperties(window_mortar_to_sdl3(mortar_window)), + SDL_PROP_WINDOW_WIN32_HWND_POINTER, + nullptr + ); + default: + SDL_LogError(SDL_LOG_CATEGORY_ERROR, "MORTAR_EXT_GetWindowProperty: unsupported property"); + return default_value; + } +} diff --git a/packaging/linux/flatpak/org.legoisland.Isle.json b/packaging/linux/flatpak/org.legoisland.Isle.json index 229ba424..83d9fe78 100644 --- a/packaging/linux/flatpak/org.legoisland.Isle.json +++ b/packaging/linux/flatpak/org.legoisland.Isle.json @@ -70,6 +70,11 @@ "path": "../../../util", "dest": "util/" }, + { + "type": "dir", + "path": "../../../mortar", + "dest": "mortar/" + }, { "type": "file", "path": "../../../CMakeLists.txt" @@ -82,4 +87,4 @@ } } ] -} \ No newline at end of file +} diff --git a/tools/gendynsdl3api.py b/tools/gendynsdl3api.py new file mode 100755 index 00000000..45a09a04 --- /dev/null +++ b/tools/gendynsdl3api.py @@ -0,0 +1,276 @@ +#!/usr/bin/env python3 + +import argparse +import contextlib +import json +from pathlib import Path +import textwrap +class Sdl3SymbolIterator: + def __init__(self, sdl3_json, skip_non_partable_symbols=True): + self.sdl3_json = sdl3_json + self.next_index = 0 + self.skip_non_partable_symbols = skip_non_partable_symbols + + @property + def symbols_remaining(self): + return len(self.sdl3_json) - self.next_index + + def __iter__(self): + return self + + def __next__(self): + while True: + if self.next_index >= len(self.sdl3_json): + raise StopIteration + symbol_json = self.sdl3_json[self.next_index] + self.next_index += 1 + name = symbol_json["name"] + rettype = symbol_json["retval"] + parameter_types = symbol_json["parameter"] + parameter_names = symbol_json["parameter_name"] + if parameter_types[0] == "void": + parameter_types = parameter_types[1:] + parameter_names = parameter_names[1:] + assert len(parameter_types) == 0 + type_decl = ", ".join(parameter_type.replace("REWRITE_NAME", parameter_name) for parameter_type, parameter_name in zip(parameter_types, parameter_names)) + + if self.skip_non_partable_symbols: + if name.startswith("Vk") or "vulkan" in name.lower(): + continue + if "android" in name.lower() or "iOS" in name: + continue + if "XTask" in type_decl or "XUser" in type_decl: + continue + if "SDL_WindowsMessageHook" in type_decl: + continue + + return rettype, name, type_decl + + +@contextlib.contextmanager +def iterate_sdl3_symbols(sdl3_json): + try: + yield Sdl3SymbolIterator(sdl3_json) + finally: + pass + + +def main(): + parser = argparse.ArgumentParser(allow_abbrev=False) + parser.add_argument("--api", required=True, type=Path, help="Path of SDL3 json api (generated by SDL/src/dynapi/gendynapi.py --dump)") + parser.add_argument("--used", required=True, type=Path, help="Path of used SDL3 symbols as a json file") + args = parser.parse_args() + + with args.api.open() as f_sdl3: + sdl3_json = json.load(f_sdl3) + + with args.used.open() as f_used: + sdl3_used = set(json.load(f_used)) + + print("#pragma once") + + print() + print(f"// This file is auto-generated by {Path(__file__).name}. Do not edit.") + + print() + print("#ifdef SDL_h_") + print("#error This file must be included BEFORE SDL3/SDL.h") + print("#endif") + + print() + print("#include ") + print("#include ") + print("#ifndef MORTAR_IMPLEMENT_SDL_MAIN") + print("#define SDL_MAIN_HANDLED") + print("#endif") + print("#include ") + print("#include ") + + print() + print("#ifdef SDL3_DYNAMIC_LOAD") + + print() + print("#define FOREACH_SDL3_SYMBOL(X) \\") + seen_symbols = set() + with iterate_sdl3_symbols(sdl3_json) as sdl3_symbol_iterator: + for rettype, name, type_decl in sdl3_symbol_iterator: + if name in sdl3_used: + print(f" X({rettype}, {name}, ({type_decl}))" + ("" if sdl3_symbol_iterator.symbols_remaining == 0 else " \\")) + seen_symbols.add(name) + + if seen_symbols != sdl3_used: + missing = sdl3_used - seen_symbols + parser.error(f"sdl3 api does not provide all required SDL3 symbols (missing={missing})") + + print() + print("#define X_SDL3_SYMBOL_TYPEDEF(RETTYPE, NAME, TYPES) typedef RETTYPE SDLCALL NAME ## _cbfn TYPES;") + print("#define X_SDL3_STRUCT_MEMBER(RETTYPE, NAME, TYPES) NAME ## _cbfn *NAME##_symbol;") + + print() + print("FOREACH_SDL3_SYMBOL(X_SDL3_SYMBOL_TYPEDEF)") + print("typedef struct SDL3_Symbols {") + print(" int refcount;") + print(" void *handle;") + print(" FOREACH_SDL3_SYMBOL(X_SDL3_STRUCT_MEMBER)") + print("} SDL3_Symbols;") + + print() + print("#undef X_SDL3_SYMBOL_TYPEDEF") + print("#undef X_SDL3_STRUCT_MEMBER") + + print() + print("extern SDL3_Symbols SDL3;") + + print() + print("#ifdef IMPLEMENT_DYN_SDL3") + + print() + print(textwrap.dedent("""\ + #ifdef _WIN32 + static const char * const sdl3_locations[] = { + "SDL3.dll", + }; + #elif defined(__APPLE__) + #define SDL3_LIBNAME "libSDL3.dylib" + #define SDL3_FRAMEWORK "SDL3.framework/Versions/A/SDL3" + static const char * const sdl3_locations[] = { + "@loader_path/" SDL3_LIBNAME, /* MyApp.app/Contents/MacOS/libSDL3_dylib */ + "@loader_path/../Frameworks/" SDL3_FRAMEWORK, /* MyApp.app/Contents/Frameworks/SDL3_framework */ + "@executable_path/" SDL3_LIBNAME, /* MyApp.app/Contents/MacOS/libSDL3_dylib */ + "@executable_path/../Frameworks/" SDL3_FRAMEWORK, /* MyApp.app/Contents/Frameworks/SDL3_framework */ + NULL, /* /Users/username/Library/Frameworks/SDL3_framework */ + "/Library/Frameworks" SDL3_FRAMEWORK, /* /Library/Frameworks/SDL3_framework */ + SDL3_LIBNAME /* oh well, anywhere the system can see the .dylib (/usr/local/lib or whatever) */ + }; + #undef SDL3_LIBNAME + #undef SDL3_FRAMEWORK + #else + static const char * const sdl3_locations[] = { + "libSDL3.so.0", + "libSDL3.so", + }; + #endif + + #ifdef _WIN32 + #include + static void *open_object(const char *name) { + return (void *)LoadLibraryA(name); + } + static void close_object(void *obj) { + FreeLibrary((HMODULE)obj); + } + static void *load_symbol(void *obj, const char *name) { + return (void *)GetProcAddress((HMODULE)obj, name); + } + static const char *load_error(void) { + static char buffer[512]; + DWORD cchMsg = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + GetLastError(), + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + buffer, + sizeof(buffer)-1, + NULL); + if (cchMsg == 0) { + strncpy(buffer, "GetProcAddress failed", sizeof(buffer)); + buffer[sizeof(buffer)-1] = '\\0'; + } + return buffer; + } + #else + #include + static void *open_object(const char *name) { + return dlopen(name, RTLD_NOW | RTLD_LOCAL); + } + static void close_object(void *obj) { + dlclose(obj); + } + static void *load_symbol(void *obj, const char *name) { + return dlsym(obj, name); + } + static const char *load_error(void) { + return dlerror(); + } + #endif + """)) + + print() + print(textwrap.dedent("""\ + #define X_SDL3_LOAD_SYMBOL(RETTYPE, NAME, TYPES) \\ + SDL3.NAME##_symbol = (NAME##_cbfn*)load_symbol(SDL3.handle, #NAME); \\ + if (!SDL3.NAME##_symbol) { \\ + missing_symbol = #NAME; \\ + goto error; \\ + } + static bool load_sdl3_api() { + if (SDL3.refcount) { + SDL3.refcount += 1; + return true; + } + SDL_zero(SDL3); + for (size_t i = 0; i < SDL_arraysize(sdl3_locations); i++) { + SDL3.handle = open_object(sdl3_locations[i]); + if (SDL3.handle != NULL) { + break; + } + } + if (!SDL3.handle) { + fputs("Could not find SDL3 library\\n", stderr); + return false; + } + const char *missing_symbol = NULL; + FOREACH_SDL3_SYMBOL(X_SDL3_LOAD_SYMBOL) + SDL3.refcount = 1; + return true; + error: + fprintf(stderr, "Could not find SDL3 symbol: %s\\n", missing_symbol); + close_object(SDL3.handle); + SDL_zero(SDL3); + return false; + }""")) + + + print() + print(textwrap.dedent("""\ + static void unload_sdl3_api() { + SDL3.refcount -= 1; + if (!SDL3.refcount) { + close_object(SDL3.handle); + SDL_zero(SDL3.handle); + } + }""")) + + print("#endif // IMPLEMENT_DYN_SDL3") + print() + + slow_symbols = ("SDL_memset", "SDL_memmove", "SDL_memcpy") + print() + with iterate_sdl3_symbols(sdl3_json) as sdl3_symbol_iterator: + for rettype, name, type_decl in sdl3_symbol_iterator: + if name in slow_symbols: + print(f"#ifndef SDL_SLOW_{name.removeprefix('SDL_').upper()}") + print(f"#ifdef {name}") + print(f"#undef {name}") + print(f"#endif // {name}") + if name in sdl3_used: + print(f"#define {name} SDL3.{name}_symbol") + else: + print(f"#define {name} SDL3_symbol_{name}_is_marked_unused") + if name in slow_symbols: + print(f"#endif // SDL_SLOW_{name.removeprefix('SDL_').upper()}") + + print() + print("#else // SDL3_DYNAMIC_LOAD") + + print() + print("#define load_sdl3_api() true") + print("#define unload_sdl3_api() do {} while (0)") + + print() + print("#endif // SDL3_DYNAMIC_LOAD") + + + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tools/ncc/skip.yml b/tools/ncc/skip.yml index e18250e9..eb8fe419 100644 --- a/tools/ncc/skip.yml +++ b/tools/ncc/skip.yml @@ -74,8 +74,8 @@ cksize: "Re-defined Windows name" fccType: "Re-defined Windows name" dwDataOffset: "Re-defined Windows name" fccType: "Re-defined Windows name" -SDL_KeyboardID_v: "SDL-based name" -SDL_MouseID_v: "SDL-based name" -SDL_JoystickID_v: "SDL-based name" -SDL_TouchID_v: "SDL-based name" +MORTAR_KeyboardID_v: "MORTAR-based name" +MORTAR_MouseID_v: "MORTAR-based name" +MORTAR_JoystickID_v: "MORTAR-based name" +MORTAR_TouchID_v: "MORTAR-based name" Load: "Not a variable but function name" \ No newline at end of file diff --git a/tools/used-sdl3-symbols.json b/tools/used-sdl3-symbols.json new file mode 100644 index 00000000..0cbcb637 --- /dev/null +++ b/tools/used-sdl3-symbols.json @@ -0,0 +1,217 @@ +[ + "SDL_AcquireGPUCommandBuffer", + "SDL_AddEventWatch", + "SDL_AddTimer", + "SDL_BeginGPUCopyPass", + "SDL_BeginGPURenderPass", + "SDL_BindGPUFragmentSamplers", + "SDL_BindGPUGraphicsPipeline", + "SDL_BindGPUIndexBuffer", + "SDL_BindGPUVertexBuffers", + "SDL_BlitGPUTexture", + "SDL_BlitSurface", + "SDL_BlitSurfaceScaled", + "SDL_CancelGPUCommandBuffer", + "SDL_ClaimWindowForGPUDevice", + "SDL_CloseGamepad", + "SDL_CloseHaptic", + "SDL_CloseIO", + "SDL_ConvertSurface", + "SDL_CreateDirectory", + "SDL_CreateGPUBuffer", + "SDL_CreateGPUDevice", + "SDL_CreateGPUGraphicsPipeline", + "SDL_CreateGPUSampler", + "SDL_CreateGPUShader", + "SDL_CreateGPUTexture", + "SDL_CreateGPUTransferBuffer", + "SDL_CreateMutex", + "SDL_CreatePalette", + "SDL_CreateProcess", + "SDL_CreateProperties", + "SDL_CreateRenderer", + "SDL_CreateSemaphore", + "SDL_CreateSurface", + "SDL_CreateSurfaceFrom", + "SDL_CreateSystemCursor", + "SDL_CreateTexture", + "SDL_CreateThreadWithPropertiesRuntime", + "SDL_CreateWindowWithProperties", + "SDL_Delay", + "SDL_DestroyAudioStream", + "SDL_DestroyGPUDevice", + "SDL_DestroyMutex", + "SDL_DestroyPalette", + "SDL_DestroyProperties", + "SDL_DestroyRenderer", + "SDL_DestroySemaphore", + "SDL_DestroySurface", + "SDL_DestroyTexture", + "SDL_DestroyWindow", + "SDL_DownloadFromGPUTexture", + "SDL_DrawGPUIndexedPrimitives", + "SDL_EndGPUCopyPass", + "SDL_EndGPURenderPass", + "SDL_EnterAppMainCallbacks", + "SDL_FillSurfaceRect", + "SDL_GL_CreateContext", + "SDL_GL_DestroyContext", + "SDL_GL_ExtensionSupported", + "SDL_GL_GetProcAddress", + "SDL_GL_MakeCurrent", + "SDL_GL_ResetAttributes", + "SDL_GL_SetAttribute", + "SDL_GL_SwapWindow", + "SDL_GetAudioStreamDevice", + "SDL_GetBasePath", + "SDL_GetClosestFullscreenDisplayMode", + "SDL_GetCurrentDisplayMode", + "SDL_GetCurrentVideoDriver", + "SDL_GetDisplayForWindow", + "SDL_GetError", + "SDL_GetFullscreenDisplayModes", + "SDL_GetGPUShaderFormats", + "SDL_GetGPUSwapchainTextureFormat", + "SDL_GetGamepadAxis", + "SDL_GetGamepadJoystick", + "SDL_GetHapticID", + "SDL_GetHaptics", + "SDL_GetIOSize", + "SDL_GetIOStatus", + "SDL_GetJoystickNameForID", + "SDL_GetKeyboardState", + "SDL_GetMouseState", + "SDL_GetPathInfo", + "SDL_GetPerformanceCounter", + "SDL_GetPerformanceFrequency", + "SDL_GetPixelFormatDetails", + "SDL_GetPixelFormatForMasks", + "SDL_GetPixelFormatName", + "SDL_GetPointerProperty", + "SDL_GetPrefPath", + "SDL_GetPrimaryDisplay", + "SDL_GetRGBA", + "SDL_GetRevision", + "SDL_GetSystemRAM", + "SDL_GetTicks", + "SDL_GetTicksNS", + "SDL_GetUserFolder", + "SDL_GetVersion", + "SDL_GetWindowFlags", + "SDL_GetWindowProperties", + "SDL_GetWindowSize", + "SDL_GetWindowSizeInPixels", + "SDL_GlobDirectory", + "SDL_HasMMX", + "SDL_HasNEON", + "SDL_HasSSE2", + "SDL_HideCursor", + "SDL_IOFromFile", + "SDL_IOFromMem", + "SDL_Init", + "SDL_InitHapticRumble", + "SDL_LoadBMP", + "SDL_LoadBMP_IO", + "SDL_LoadFile", + "SDL_LockMutex", + "SDL_LockSurface", + "SDL_LogError", + "SDL_LogMessageV", + "SDL_MapGPUTransferBuffer", + "SDL_MapRGB", + "SDL_MapRGBA", + "SDL_OpenAudioDeviceStream", + "SDL_OpenGamepad", + "SDL_OpenHaptic", + "SDL_OpenHapticFromJoystick", + "SDL_OpenHapticFromMouse", + "SDL_PlayHapticRumble", + "SDL_PushEvent", + "SDL_PushGPUFragmentUniformData", + "SDL_PushGPUVertexUniformData", + "SDL_PutAudioStreamData", + "SDL_Quit", + "SDL_RaiseWindow", + "SDL_ReadIO", + "SDL_RegisterEvents", + "SDL_ReleaseGPUBuffer", + "SDL_ReleaseGPUFence", + "SDL_ReleaseGPUGraphicsPipeline", + "SDL_ReleaseGPUSampler", + "SDL_ReleaseGPUShader", + "SDL_ReleaseGPUTexture", + "SDL_ReleaseGPUTransferBuffer", + "SDL_ReleaseWindowFromGPUDevice", + "SDL_RemovePath", + "SDL_RemoveTimer", + "SDL_RenamePath", + "SDL_RenderPresent", + "SDL_RenderTexture", + "SDL_ReportAssertion", + "SDL_ResumeAudioDevice", + "SDL_RumbleGamepad", + "SDL_RunApp", + "SDL_SeekIO", + "SDL_SetBooleanProperty", + "SDL_SetCursor", + "SDL_SetError", + "SDL_SetGPUScissor", + "SDL_SetHint", + "SDL_SetNumberProperty", + "SDL_SetPaletteColors", + "SDL_SetPointerProperty", + "SDL_SetStringProperty", + "SDL_SetSurfaceColorKey", + "SDL_SetSurfacePalette", + "SDL_SetWindowBordered", + "SDL_SetWindowFullscreen", + "SDL_SetWindowFullscreenMode", + "SDL_SetWindowIcon", + "SDL_SetWindowPosition", + "SDL_SetWindowResizable", + "SDL_SetWindowSize", + "SDL_SetWindowTitle", + "SDL_ShowCursor", + "SDL_ShowSimpleMessageBox", + "SDL_SignalSemaphore", + "SDL_SubmitGPUCommandBuffer", + "SDL_SubmitGPUCommandBufferAndAcquireFence", + "SDL_TellIO", + "SDL_UnlockMutex", + "SDL_UnlockSurface", + "SDL_UnmapGPUTransferBuffer", + "SDL_UpdateTexture", + "SDL_UploadToGPUBuffer", + "SDL_UploadToGPUTexture", + "SDL_WaitAndAcquireGPUSwapchainTexture", + "SDL_WaitForGPUFences", + "SDL_WaitSemaphore", + "SDL_WaitThread", + "SDL_WarpMouseInWindow", + "SDL_WriteIO", + "SDL_calloc", + "SDL_free", + "SDL_isdigit", + "SDL_itoa", + "SDL_malloc", + "SDL_memcmp", + "SDL_memcpy", + "SDL_memset", + "SDL_rand", + "SDL_randf", + "SDL_snprintf", + "SDL_strcasecmp", + "SDL_strchr", + "SDL_strdup", + "SDL_strlcpy", + "SDL_strlen", + "SDL_strlwr", + "SDL_strncasecmp", + "SDL_strncmp", + "SDL_strstr", + "SDL_strtok_r", + "SDL_strupr", + "SDL_tolower", + "SDL_vsnprintf", + "SDL_vsscanf" +] diff --git a/util/compat.h b/util/compat.h index 77a1f392..9028f95e 100644 --- a/util/compat.h +++ b/util/compat.h @@ -24,7 +24,7 @@ #elif defined(__vita__) #define Any_ShowSimpleMessageBox Vita_ShowSimpleMessageBox #else -#define Any_ShowSimpleMessageBox SDL_ShowSimpleMessageBox +#define Any_ShowSimpleMessageBox MORTAR_ShowSimpleMessageBox #endif // Disable "identifier was truncated to '255' characters" warning.